In the last years, energy storage systems are increasingly involved in applications in which they are required to deliver or adsorb significant charging or discharging currents in short intervals of time, typically a few seconds. Thanks to their high specific power, supercapacitors may represent one of the most promising technologies for this kind of applications. However, one of the main concerns regarding their operation is the accurate estimation of their state of charge; the most common technique, based on ampere-hour counting, typically requires some correction mechanisms, since it implies a significant loss of accuracy over time, due to the accumulation of measuring errors. In the present paper, a novel algorithm to assess the state of charge of supercapacitors is described and implemented. The algorithm is based on the evaluation of the parameters of an equivalent electric circuit of the supercapacitor, and on the consequent use of a Luenberger-style technique for the runtime evaluation of its state of charge, based on the measure of current and voltage at supercapacitor's terminals. The algorithm estimates the cell open circuit voltage while the current is highly variable, as typical in power-oriented applications, hence the corresponding state of charge.