Frequently Asked Questions
What is this tool actually for?
If you're building a custom battery pack (like for an e-bike, powerwall, or RC project) using loose lithium cells, welding them together randomly is inefficient. Every single cell has slightly different health and capacity. This tool takes your cell test data and calculates the closest to absolute best way to arrange them so your final battery pack performs most efficiently.
What if I don't know the internal resistance of my cells?
Just set the Capacity Weight to 100% and Resistance Weight to 0% in the configuration. Leave the resistance fields blank (or at 0) when adding your cells, and the tool will completely ignore resistance, packing everything based purely on capacity.
Why do I need to optimize my battery pack?
A battery pack is only as strong as its weakest link (the weakest parallel group). If you accidentally group too many low-capacity cells together, that specific group will run out of juice first, and your Battery Management System (BMS) will shut off your whole battery early. By letting this app distribute the capacity evenly, you get maximum range and won't waste good energy.
How do I use it?
Follow steps:
- Set up your pack size on the left panel (for example, 14 Series, 4 Parallel).
- Add your tested cells. You can type them in manually, upload a CSV file from your spreadsheet, or just click "Load Demo" to see how it works.
- Click Optimize Pack.
- Look at the Results area. It gives you a blueprint of exactly which cell goes into which group so you can start spot-welding.
- !! NOTE !! : The optimization process may take a few moments depending on the number of cells and the specifications of your computer.
- !! NOTE !! : Some cells may not be used if they don't meet the criteria.
Why do we care about balancing internal resistance?
In a parallel group, cells share the electrical load. If one cell has a much lower resistance than the ones next to it, it will do most of the heavy lifting. This makes it heat up faster and die sooner. Balancing the resistance ensures all cells share the work evenly, which is much safer and makes your pack last years longer.
How should I format my CSV file?
Save your spreadsheet using semicolons (;) as separators. The order for each row must be: ID;Capacity;Resistance;Manufacturer;Condition. Do not include a title/header row at the top. If you don't have some info (like Manufacturer), just leave it blank between the semicolons. Make sure the ID is a normal number.
How does the math behind the scenes work?
It runs in two stages. First, it uses a "greedy" algorithm to do a rough distribution based on how you set the weight sliders. After that, it runs a hill-climbing optimization, the algorithm simulates thousands of tiny cell swaps between your parallel groups until it finds the absolute mathematically tightest balance across the whole pack.
About the Project
This is an open-source battery pack optimizer. It calculates the most efficient distribution of lithium-ion cells for custom battery packs. Traditional tools often ignore internal resistance, which leads to unbalanced parallel groups and shorter lifespan. This tool uses a C++ backend compiled to WebAssembly for fast processing directly in the browser.
Privacy & Security: Because this tool utilizes WebAssembly, the optimization algorithm runs 100% locally on your own computer. Your battery data, custom configurations, and uploaded CSV files are processed entirely in your browser and are never uploaded, saved, or sent to any external server.
About the Author
I am Justas, an Informatics Engineering student at KTU. I developed this tool while building a custom electric bicycle (up to 90km range) using recycled laptop lithium-ion cells. The goal was to mathematically ensure the best possible range and pack longevity. My interests include system programming, security, and practical engineering solutions.
Contacts
Email: [email protected]
GitHub: github.com/NaroeDEVs
Website: justasmerkis.me