SoC Estimation Methods: Coulomb Counting vs Kalman Filtering for LiFePO4 Batteries
State of Charge (SoC) estimation is one of the most critical functions in any battery energy storage system. An inaccurate SoC reading can lead to overcharging, deep discharging, or unexpected power loss — all of which degrade battery life and compromise safety. In this guide, we break down the two dominant SoC estimation methods — Coulomb counting and Kalman filtering — and explain which approach makes sense for your LiFePO4 system.

What Is State of Charge (SoC) and Why It Matters
SoC represents the remaining capacity of a battery expressed as a percentage of its full capacity. Unlike a fuel tank you can visually inspect, a battery’s charge level must be inferred from electrical measurements. In LiFePO4 energy storage systems, where flat voltage curves make direct voltage-based estimation unreliable, choosing the right SoC algorithm directly impacts system performance and longevity.
Poor SoC estimation causes three major problems:
- Overdischarge damage: Draining cells below 2.5V permanently reduces capacity
- False capacity readings: Users see “80% remaining” but the battery dies at 40%
- Cell imbalance escalation: Inaccurate SoC prevents the BMS from balancing cells effectively
Coulomb Counting: The Simple Workhorse
Coulomb counting (also called current integration) is the most widely used SoC method in commercial BMS units. It works by integrating the current flowing in and out of the battery over time:
SoC(t) = SoC(t₀) + (1/Qn) × ∫I(τ)dτ
Where Qn is the nominal capacity and I(τ) is the instantaneous current. If the battery starts at 100% and you draw 50Ah from a 100Ah cell, the SoC reads 50%.

Advantages of Coulomb Counting
- Computationally lightweight: Runs on basic microcontrollers with minimal processing power
- Easy to implement: Requires only a current sensor and a timer — no complex modeling
- Good short-term accuracy: Over minutes to a few hours, drift is negligible
Limitations of Coulomb Counting
- Drift accumulation: Small measurement errors compound over time. A 1% current sensor error becomes a 10-20% SoC error after days of operation
- Requires periodic reset: Needs a full charge or discharge to recalibrate — not always practical in daily use
- Temperature blind: Doesn’t account for capacity changes at different temperatures (a 280Ah cell delivers only ~240Ah at 0°C)
- No self-discharge correction: Slow self-discharge over weeks is invisible to Coulomb counting
Kalman Filtering: The Intelligent Estimator
The Kalman filter (and its nonlinear variant, the Extended Kalman Filter or EKF) treats SoC estimation as a state estimation problem. It combines a battery model with real-time measurements to produce an optimal SoC estimate — along with a confidence bound on that estimate.

How Kalman Filtering Works
The EKF operates in a two-step loop:
- Predict step: Uses the battery model to predict the current SoC based on the previous state and measured current
- Update step: Compares the predicted terminal voltage against the actual measured voltage, then corrects the SoC estimate proportionally to the difference (weighted by the Kalman gain)
This feedback mechanism is what makes Kalman filtering self-correcting. Even if the initial SoC is wrong or drift accumulates, the voltage comparison pulls the estimate back toward reality.
Advantages of Kalman Filtering
- Self-correcting: Voltage feedback eliminates long-term drift without requiring a full charge/discharge cycle
- Confidence intervals: Provides uncertainty bounds — the BMS knows when its estimate is unreliable
- Temperature compensation: The battery model can incorporate temperature-dependent parameters
- Handles aging: Online parameter identification can track capacity fade over the battery’s lifetime
Challenges of Kalman Filtering
- Model dependency: Accuracy depends entirely on how well the battery model matches reality — a poor model gives poor results
- Computational cost: Matrix operations require more processing power than Coulomb counting
- Tuning complexity: Process noise and measurement noise covariance matrices (Q and R) must be tuned for each cell type and operating condition
- LiFePO4 voltage plateau: The flat OCV curve of LiFePO4 cells provides less voltage information for the update step, making tuning especially critical
Head-to-Head Comparison
| Feature | Coulomb Counting | Kalman Filter (EKF) |
|---|---|---|
| Drift over time | Yes — accumulates | Self-correcting |
| Initial SoC needed | Yes (critical) | Converges automatically |
| Computation | Minimal | Moderate |
| LiFePO4 accuracy | Moderate | Good (with proper tuning) |
| Temperature handling | None (basic) | Built-in (via model) |
| Aging compensation | No | Possible (adaptive EKF) |
| Implementation cost | Low | Medium-High |
Practical Recommendations for Your System
For DIY and Budget Systems
Coulomb counting is sufficient if you perform a full charge cycle every 2-4 weeks to reset the drift. Most JK BMS and Daly BMS units use Coulomb counting with OCV lookup tables for initialization. Make sure your BMS supports a manual SoC reset function.
For Professional Installations
Invest in a BMS with EKF-based estimation. The improved accuracy reduces the risk of unexpected shutdowns and extends battery life by 5-10% through better charge management. Look for BMS units that advertise “adaptive SoC” or “model-based estimation.”
Hybrid Approaches (Best of Both)
The most robust implementations combine both methods: Coulomb counting for short-term tracking, with periodic Kalman filter corrections when the OCV-SoC relationship provides enough information (typically above 3.4V or below 3.2V for LiFePO4, where the curve steepens). This hybrid strategy is what premium BMS platforms like the JK BMS PB series implement.
Conclusion
SoC estimation isn’t just a technical detail — it’s the foundation of safe, efficient battery operation. Coulomb counting works well for cost-sensitive applications with regular full-charge cycles. Kalman filtering delivers superior long-term accuracy and self-correction, especially valuable in systems that rarely reach full charge. For the best results, look for a BMS that implements a hybrid approach, combining the simplicity of current integration with the self-correcting intelligence of model-based estimation.
At Insum Energy, we help you select the right BMS and battery configuration for your specific needs — whether you’re building a DIY home storage system or installing a commercial-scale solution. Contact our team to discuss your project, or explore our range of LiFePO4 cells and DIY kits to get started.
