In short: we invent no number. We take Eurostat's official data, show it to you, and give you a link to check it yourself.
Eurostat is the official statistics office of the European Union. The prices in Bulgaria (bread, electricity, rent, fuel, medicine) are collected every month by NSI, the Bulgarian statistics office, which builds Bulgaria's index from them. The one common European method, and the check that it was followed, are Eurostat's, and Eurostat publishes the result free for everyone. This app invents no prices: it copies Eurostat's official numbers and shows them to you. That's why every figure carries a link (the ↗ icon) to the exact Eurostat table, so you can check it yourself.
All of Bulgaria's figures, with their sources →
An index is a number that tracks one group's prices. On its own it means nothing: what means something is the ratio between two of its readings. If food's index at the end of 2020 was 115 and today it is 185, food is 60% more expensive (185 ÷ 115 = 1.6). Had today's been 150, the rise would be 30%. The app makes exactly that comparison for the period you pick: today's number against the number for your year. Where each index starts does not matter: the starting point cancels in the division, so we leave the numbers exactly as Eurostat publishes them and the ↗ link on the row returns the same digits.
The number in the strip up top is Eurostat's official inflation for the whole basket, every Bulgarian pooled together. Your number uses your group shares, so it differs: if you spend more on faster-rising groups, your inflation is higher, and vice-versa. This time the two are for different months. Eurostat publishes the overall rate about two weeks before the group breakdown, and we show each figure with its own month rather than hold the newer one back. The overall figure is for September 2026, the per-group figures for August 2026.
The number in the strip up top and "the average basket" in the calculation sit a tenth or two of a percentage point apart. Both are correct and both come from Eurostat, they are simply assembled differently. "The average basket" is the sum of the 13 groups at their official weights. The strip's number is not such a sum: every January Eurostat changes the weights, because people spend a little differently than last year, and links the new basket to the old one at the end of December. The last 12 months run through that changeover, and that is where the gap comes from. It is the method, not a mistake; which is why we show both numbers rather than pretending they are one.
Because inflation in Bulgaria is measured in two official ways, and they differ a little. Vyarno shows Eurostat's harmonised index (HICP), the measure that is the same across the EU and the one Bulgaria adopted the euro under. NSI also computes a national index (CPI): a slightly different basket and a different treatment of housing. So the two can sit a tenth or two apart. Neither is wrong: it is like measuring the same thing with two rulers whose markings differ slightly. We show only one of them (HICP) so there aren't two numbers competing to be right.
Your salary and spending never leave your device. The whole calculation runs in your browser. We never see or store anything personal.
There is no paid version, and nothing is held back for whoever pays. No figure here depends on who is paying: which data we show, how we compute it and how affordable a home comes out are decided by the source and the method, and by nothing else. The domain is covered by donations; the hosting is free. What donations cover, and what they do not buy →
π = Σ (wi ÷ Σw) × ri. Here wi is your share for group i (the sliders; dividing by Σw normalises them to 100%). ri is the group's official price rise: the annual rate (Eurostat, prc_hicp_minr, RCH_A). real = (1 + raise) ÷ (1 + π) − 1 value today = amount ÷ (1 + the rise since 2020), where the rise is I(now) ÷ I(2020) − 1 on Eurostat's all-items index (prc_hicp_minr, TOTAL) as published price = €/m² × size · years = price ÷ (12 × pay). The payment is the same every month to the
end of the term, the ordinary bank annuity. P = L × m ÷ (1 − (1 + m)−n), where L = 85% of the price (15% down), m = annual rate ÷ 12, n = term × 12.