Reckon docs Open Reckon

Getting started

Open Reckon and start typing. Each line is a calculation; its answer appears on the right as you type. Click an answer to copy it.

Reckon works offline after the first visit, and you can install it as an app with its own icon and window:

The tip at the bottom of the notes list shows the right steps for your device. Tips cycle each visit; turn them off in Settings.

Seeing how a note works

Notes, sharing and backups

Privacy

Notes never leave your browser. There are no accounts, no servers and no analytics. Share links keep the note after the #, a part of the URL browsers never send to a server.

The only network requests fetch exchange rates (open.er-api.com, falling back to Frankfurter; CoinGecko only if a note mentions crypto). They never include your notes, and you can turn them off in Settings.

Questions

Why does a line show no answer? Reckon shows nothing rather than guess. Common causes: an unknown name (total cost + 1 before total cost is defined), two bare numbers in a row (3 cats and 2 dogs), or mixing units that don't convert (5 km + 3 kg).

How do I type decimals in another locale? Always with a dot: 1,234.5. The number format setting only changes how answers look.

Is in inches or "convert to"? It converts when a unit follows (5 km in miles). Right after a number with nothing after it, it's inches (6 ft 2 in). In ordinary text (5 people in the room) it's ignored.

Why did a word stop working after I defined a variable? Variables win over units and keywords, so after F = 5, 72 F means 72 × 5. Pick a different name.

Templates

Ready-made notes for everyday sums. Open one, change the numbers, and save it as your own. Every answer is checked by Reckon's tests (with sample exchange rates, on Jan 15, 2026).

Split the bill

Tax and tip on a shared meal. Click the tip to change it, and every answer follows.

food = $186.40$186.40
tax rate = 8.875%8.875%
tip = 15% | [18%] | 20%18%
people = 44
tax = tax rate of food$16.54
tip amount = tip of food$33.55
total = food + tax + tip amount$236.50
each = total / people$59.12
Open in Reckon ↗

Trip budget

Mix currencies freely; the total is in dollars.

flights: $420 × 2$840.00
hotel: 4 nights × €135€540.00
food: €60 × 4€240.00
tours: ¥12,000¥12,000
sum in USD$1,786.67
per person: prev / 2$893.33
Open in Reckon ↗

Freelance hourly rate

Work back from the income you want to the rate you need to charge.

target income = $120,000$120,000.00
expenses = $14,000$14,000.00
weeks off = 66
billable hours a week = 2525
billable hours = (52 - weeks off) × billable hours a week1,150
hourly rate = (target income + expenses) / billable hours$116.52
day rate = hourly rate × 8$932.17
Open in Reckon ↗

Salary and hourly pay

Compare a salary with an hourly wage, and see a raise.

salary = $85,000$85,000.00
hours a week = 4040
hourly = salary / (52 × hours a week)$40.87
monthly = salary / 12$7,083.33
raise = 4%4%
salary + raise$88,400.00
Open in Reckon ↗

Startup runway

How long the money lasts, and when it runs out.

cash in bank = $480,000$480,000.00
monthly revenue = $18,000$18,000.00
salaries = $42,000$42,000.00
rent = $6,500$6,500.00
software = $2,300$2,300.00
other costs = $4,000$4,000.00
monthly burn = salaries + rent + software + other costs - monthly revenue$36,800.00
runway = floor(cash in bank / monthly burn) months13 months
out of money: today + runwayMon, Feb 15, 2027
Open in Reckon ↗

LTV and CAC

What a customer is worth against what it costs to win one. Aim for 3× or more.

price = $49$49.00
gross margin = 80%80%
monthly churn = 3%3%
lifetime = round(1 / monthly churn, 1)33.3
ltv = price × gross margin × lifetime$1,305.36
marketing spend = $25,000$25,000.00
new customers = 120120
cac = marketing spend / new customers$208.33
ltv to cac: round(ltv / cac, 1)6.3
months to win back cac: round(cac / (price × gross margin), 1)5.3
Open in Reckon ↗

Loan payment

The monthly payment on a loan, and what it costs in interest.

loan = $350,000$350,000.00
annual rate = 6.5%6.5%
years = 3030
r = annual rate / 120.5416666667%
n = years × 12360
payment = loan × r / (1 - (1 + r)^-n)$2,212.24
total paid = payment × n$796,405.71
interest = total paid - loan$446,405.71
Open in Reckon ↗

Savings goal

How long to save for something, and how compound interest grows a balance.

goal = $15,000$15,000.00
saved = $3,200$3,200.00
monthly saving = $450$450.00
months needed = ceil((goal - saved) / monthly saving) months27 months
reached: today + months neededSat, Apr 15, 2028
balance = $10,000$10,000.00
rate = 5%5%
after 10 years: balance × (1 + rate)^10$16,288.95
Open in Reckon ↗

Unit price

Which pack is the better deal?

small = $3.49 / 400 g in $/kg$8.73/kg
large = $8.99 / 1.2 kg in $/kg$7.49/kg
large < smalltrue
saving: round((small - large) / small, 3) in %14.1%
Open in Reckon ↗

Scale a recipe

Change the servings and every amount follows. Convert to metric as you go.

servings = 44
want = 1010
scale = want / servings2.5
flour: 2.5 cups × scale in g750 g
butter: round(6 tbsp × scale in g)213 g
milk: 1.25 cups × scale in ml739.3382 mL
bake: 350 °F in °C176.6667 °C
Open in Reckon ↗

Paint a room

Wall area, less doors and windows, in liters of paint.

width = 4.2 m4.2 m
length = 3.6 m3.6 m
height = 2.5 m2.5 m
walls = 2 × (width + length) × height39 m²
doors and windows = 4 m²4 m²
area = walls - doors and windows35 m²
coats = 22
coverage = 10 m² per liter10 m²/L
paint = area × coats / coverage7 L
Open in Reckon ↗

Download time

How long a file takes at a given speed. Bits (Mbps) and bytes (MB/s) convert for you.

file = 48 GB48 GB
speed = 200 Mbps200 Mbps
file / speed in min32 min
backup = 2 TB2 TB
backup / (40 MB/s) in hours13.8889 h
Open in Reckon ↗

Project timeline

Work back from a deadline, or forward from a start date.

launch = Mar 30Mon, Mar 30
days until launch74 days
weeks until launch10.5714 weeks
kickoff = next mondayMon, Jan 19
kickoff + 6 weeksMon, Mar 2
code freeze: launch - 2 weeksMon, Mar 16
Open in Reckon ↗

Meeting across time zones

One time, everywhere the team works.

meeting = 9am PST9:00 AM PST
meeting in New York12:00 PM EST
meeting in London5:00 PM GMT
meeting in Berlin6:00 PM GMT+1
meeting in Bangalore10:30 PM GMT+5:30
meeting in TokyoFri, 2:00 AM GMT+9
Open in Reckon ↗

Syntax

Every example below is checked by Reckon's tests. Answers use sample exchange rates, and dates assume it's Thursday, Jan 15, 2026, 12:00 in UTC. Open in Reckon opens the example as a note you can edit and save.

Basics

Type a calculation on any line; its answer appears beside it. Decimals are exact.

2 + 3 × 414
(2 + 3) × 420
2^101,024
10 mod 31
5!120
0.1 + 0.20.3
Open in Reckon ↗

Numbers

Thousands separators, shorthands, other bases and fractions all work.

1,000,000 + 1_0001,001,000
1.5k + 2M2,001,500
3bn / 1 million3,000
1.5e31,500
0xFF + 0b1010265
1½1.5
Open in Reckon ↗

Text and structure

Words around numbers are ignored, so notes read naturally. Text before a colon is a label. Lines starting with # are headings, and // starts a comment.

3 apples + 2 apples5
rent: 1,2001,200
5 plus 3 times 211
10 divided by 42.5
Open in Reckon ↗

Variables

Name a value with =. Names can have spaces.

monthly rent = 1,2001,200
utilities = 150150
(monthly rent + utilities) × 1216,200
Open in Reckon ↗

Your own functions and units

Define a function with name(x) = …, or a unit with 1 name = …. They apply to the lines below.

tip(bill, rate) = bill × rate
tip($80, 18%)$14.40
1 sprint = 2 weeks2 weeks
3 sprints in days42 days
1 dozen = 1212
3 dozen36
Open in Reckon ↗

Previous answers and totals

prev is the last answer. sum, avg, median, stdev, count, min and max cover the lines since the last heading or blank line. line3 is the answer on line 3; in the app, double-click an answer to use it below, and the reference follows its line as you add or remove lines. subtotal adds up the lines since the last subtotal, and grand total adds up the subtotals; in the app, double-click a blank line under some answers to add a subtotal. Tag lines with #words, and total them with sum #tag (or avg, count…), across the whole note.

groceries: 8080
gas: 4545
dinner: 5555
sum180
median55
avg60
prev × 2120
Open in Reckon ↗
rent: 1,2001,200
power: 8080
subtotal1,280
food: 300300
subtotal300
grand total1,580
Open in Reckon ↗
lunch $12 #food$12.00
taxi $30 #travel$30.00
dinner $45 #food$45.00
sum #food$57.00
Open in Reckon ↗

Percentages

20% of 5010
50 + 10%55
10% off $80$72.00
5 as % of 2025%
5 is what % of 2025%
20% of what is 525
Open in Reckon ↗

Comparisons and conditions

Compare with < > <= >= == and !=, and combine with and, or and not. Units and currencies convert before comparing.

5 km > 3 milestrue
0.1 + 0.2 == 0.3true
order = $120$120.00
if order >= $100 then 10% off order else order$108.00
0xF0 | 0x0F255
Open in Reckon ↗

Choices

Options separated by |, with the current one in brackets. In the app, click it to pick the next one. Options can carry values.

transport = car | [train] | flytrain
if transport == train then $80 else $300$80.00
fare = car $120 | [train $80] | fly $300$80.00
Open in Reckon ↗

Units

Convert with in, to or as. Units combine and cancel, and plain numbers take the other side's unit.

5 km in miles3.1069 mi
6 ft 2 in in cm187.96 cm
72 °F in °C22.2222 °C
2 cups in ml473.1765 mL
1 GB / 4 MB250
60 mph in km/h96.5606 km/h
3 m × 4 m12 m²
1 m + 20 cm1.2 m
12pt in px16 px
2 cups flour in g240 g
Open in Reckon ↗

Money

Currency symbols, codes and names, plus crypto. Rates refresh hourly and keep working offline; these examples use sample rates.

$30 in EUR€27.00
€20 + $5€24.50
hourly rate = $85/h$85.00/h
37.5 h × hourly rate$3,187.50
0.01 BTC in USD$1,000.00
Open in Reckon ↗

Dates and times

These examples assume it's Thursday, Jan 15, 2026, 12:00 in UTC.

today + 2 weeksThu, Jan 29
next friday at 3pmFri, Jan 16, 3:00 PM
days until Dec 25344 days
Jan 31 + 1 monthSat, Feb 28
3pm + 90 min4:30 PM
3 days agoMon, Jan 12
Open in Reckon ↗

Time zones

Use places (every major city), abbreviations like PST, or offsets like UTC+5:30.

time in Tokyo9:00 PM GMT+9
3pm PST in London11:00 PM GMT
9:00 EST to CET3:00 PM GMT+1
Open in Reckon ↗

Functions and formats

sqrt(16) + cbrt(27)7
round(3.14159, 2)3.14
sin(30)0.5
log(1000)3
2pi6.2831853072
255 in hex0xFF
1500 in sci1.5e3
Open in Reckon ↗

Glossary

Every word and symbol Reckon understands, with an example of each. Multi-line examples show the last line's answer.

Lines and structure

Each line is one calculation. These shape a note.

WriteMeaningExample
# HeadingA heading: starts a section and resets sum, avg and the other totals
// commentA comment, at the start or end of a line5 + 5 // ten → 10
label:Text before a colon is a label and is ignoredrent: 1,200 → 1,200
name = valueDefines a variable; names can have spacestax rate = 8% → 8%
(blank line)Ends a block, so the next sum starts again
other wordsDescriptive words around numbers are ignored, unless they sit where a value belongs3 apples + 2 apples → 5

Numbers

WriteMeaningExample
1,000 1_000Thousands separators (commas only outside parentheses)1,000,000 + 1_000 → 1,001,000
1.5e3 2.5E-3Scientific notation1.5e3 → 1,500
k K M bnSuffixes written right after a number: thousand, million, billion1.5k + 2M → 2,001,500
thousand million billion trillionScale words after a number2 million → 2,000,000
0x… 0b… 0o…Hexadecimal, binary and octal numbers0xFF + 0b1010 → 265
½ ⅓ ⅔ ¼ ¾ ⅕ ⅖ ⅗ ⅘ ⅙ ⅚ ⅛ ⅜ ⅝ ⅞Fraction characters, alone or after a whole number1 ½ + ¼ → 1.75

Operators

Symbols and their word forms. Multiplication can also be implied: 2(3 + 4), 2pi.

WriteMeaningExample
+Add2 + 3 → 5
- − –Subtract, or make negative10 − 4 → 6
* × · ⋅Multiply6 × 7 → 42
/ ÷Divide10 ÷ 4 → 2.5
^ ** ² ³Power2^10 → 1,024
!Factorial5! → 120
( )Grouping(2 + 3) × 4 → 20
= (at the end)A trailing = is ignored2 + 2 = → 4
plusAdd5 plus 3 → 8
minusSubtract5 minus 3 → 2
times multiplied byMultiply5 times 3 → 15
divided byDivide10 divided by 4 → 2.5
mod moduloRemainder after division10 mod 3 → 1
xTimes, when it sits between two numbers3 x 4 → 12
perDivides: km per hour100 km per 2 h → 50 km/h
&Bitwise and (whole numbers)0xFF & 0x0F → 15
|Bitwise or0xF0 | 0x0F → 255
xorBitwise exclusive or5 xor 3 → 6
<< >>Shift bits left or right1 << 10 → 1,024

Percentages

WriteMeaningExample
% percent pctA percentage20 percent → 20%
ofPercentage of an amount20% of 50 → 10
+ % - %Add or subtract a percentage of the amount50 + 10% → 55
offDiscount10% off $80 → $72.00
onMarkup10% on 50 → 55
as % of as a % ofWhat percentage one amount is of another5 as % of 20 → 25%
is what % ofSame, as a question5 is what % of 20 → 25%
% of what isThe whole, from a part and its percentage20% of what is 5 → 25

Comparisons and conditions

Comparisons answer true or false. Units, currencies and dates convert before comparing.

WriteMeaningExample
< > <= >= ≤ ≥Less than, greater than, or equal5 km > 3 miles → true
== != ≠Equal, not equal (decimals are exact)0.1 + 0.2 == 0.3 → true
and &&Both are true5 > 3 and 2 > 1 → true
or ||Either is true5 > 30 or 2 > 1 → true
notThe oppositenot 5 > 3 → false
true falseTrue and false valuesmember = true → true
if … then … else …Picks a value by a condition; without else, false shows no answerprice = $120
if price > $100 then 10% off price else price
→ $108.00
… | [… ] | …A choice: the bracketed option is current (or the first). In the app, click it to pick the next onetransport = car | [train] | fly
if transport == train then $80 else $300
→ $80.00
… $… | [… $…]A choice whose options have values: the variable is the current onefare = car $120 | [train $80] | fly $300 → $80.00

Your own functions and units

Definitions apply to the lines below them.

WriteMeaningExample
name(x) = … name(x, y) = …Defines a function; it can use variables above it and call itselfarea(w, h) = w × h
area(3 m, 4 m)
→ 12 m²
1 name = …Defines a unit (the plural works too). It can replace a built-in one, like a metric cup1 sprint = 2 weeks
3 sprints in days
→ 42 days

Totals and references

WriteMeaningExample
sum totalAdds up the answers above, back to the last heading or blank line10
20
sum
→ 30
avg average meanAverage of the answers above10
20
avg
→ 15
medianMiddle answer above (the mean of the two middle ones when the count is even)10
20
median
→ 15
stdev stddev stdSample standard deviation of the answers above (n − 1, like spreadsheets)10
20
stdev
→ 7.0710678119
countHow many answers are above10
20
count
→ 2
minSmallest answer above (min(…) with parentheses is the function)10
20
min
→ 10
maxLargest answer above (max(…) with parentheses is the function)10
20
max
→ 20
subtotalSum since the last subtotal, blank line or heading; in the app, double-click a blank line to add one10
20
subtotal
→ 30
grand totalEvery subtotal since the last heading, plus the answers after the last one10
20
grand total
→ 30
prev previous ansThe previous answer10
prev × 2
→ 20
line3 line 3The answer on line 3 (any line number)7
8
line1 × 10
→ 70
#tagTags a line (lunch $12 #food); a total followed by tags (sum #food) covers every line above with themlunch $12 #food
taxi $30
dinner $45 #food
sum #food
→ $57.00

Conversions and formats

Convert with any of these words, followed by a unit, a currency, a time zone or a format.

WriteMeaningExample
in to as intoConvert: 5 km in miles, $30 to EUR, now in Tokyo5 km in miles → 3.1069 mi
hex hexadecimalShow in hexadecimal255 in hex → 0xFF
bin binaryShow in binary10 in binary → 0b1010
oct octalShow in octal8 as oct → 0o10
sci scientificShow in scientific notation1500 in sci → 1.5e3
dec decimalShow as a plain decimal again0xFF in dec → 255
% percent percentageShow as a percentage0.25 as % → 25%

Functions

Write function(argument), or leave out the parentheses for one argument: sqrt 16.

WriteMeaningExample
sqrtSquare root (also of areas: sqrt(16 m²) = 4 m)sqrt(16) → 4
cbrtCube rootcbrt(27) → 3
rootnth root: root(x, n)root(16, 4) → 2
absAbsolute valueabs(-5) → 5
roundRound, optionally to n decimal places: round(x, n)round(3.14159, 2) → 3.14
floorRound downfloor(2.7) → 2
ceilRound upceil(2.1) → 3
truncDrop the decimalstrunc(-2.7) → -2
sinSine (degrees by default; also takes angles: sin(pi rad))sin(30) → 0.5
cosCosinecos(60) → 0.5
tanTangenttan(45) → 1
asinInverse sineasin(1) → 90
acosInverse cosineacos(0) → 90
atanInverse tangentatan(1) → 45
sinhHyperbolic sinesinh(0) → 0
coshHyperbolic cosinecosh(0) → 1
tanhHyperbolic tangenttanh(0) → 0
lnNatural logarithmln(e) → 1
logLogarithm, base 10 or log(x, base)log(8, 2) → 3
log2Base-2 logarithmlog2(1024) → 10
expe to the power of xexp(1) → 2.7182818285
fact factorialFactorial (same as x!)fact(5) → 120
minSmallest of the arguments (units convert)min(3 m, 250 cm) → 2.5 m
maxLargest of the argumentsmax(4, 9, 2) → 9
sum totalSum of the argumentssum(1, 2, 3) → 6
avg average meanAverage of the argumentsavg(2, 4) → 3
medianMiddle value of the argumentsmedian(5, 1, 3) → 3
stdev stddev stdSample standard deviation of the argumentsstdev(2, 4, 4, 4, 5, 5, 7, 9) → 2.1380899353

Constants

WriteMeaningExample
pi ππ, 3.14159…2 × pi → 6.2831853072
tau ττ = 2π2 × tau → 12.5663706144
eEuler's number, 2.71828…2 × e → 5.4365636569
phi φThe golden ratio φ, 1.61803…2 × phi → 3.2360679775

Dates and times

Dates and times can be combined ("tomorrow at 9am", "Dec 25 3pm") and followed by a time zone ("3pm PST").

WriteMeaningExample
today tomorrow yesterdayRelative daystomorrow →
nowThe current date and timenow + 3 h →
monday tuesday wednesday thursday friday saturday sundayThe next such day (today counts)friday →
next … last … this …Before a weekday (abbreviations work here: mon, tue, wed, thu, fri, sat, sun, tues, thur, thurs), or next/last before week, month, yearnext monday →
january jan february feb march mar april apr may june jun july jul august aug september sep october oct november nov december dec septMonths, with a day: Dec 25, December 25th, 2027, 25 Dec, 3rd of MarchDec 25 →
2026-07-04 2026-07-04T09:30ISO dates, with an optional time2026-07-04 →
3pm 3:30 pm 11 a.m. 15:4512- and 24-hour times3:30 pm →
noon midday midnightNamed timesnoon →
atJoins a date and a timetomorrow at 9am →
+ duration - durationMove a date or time; months follow the calendartoday + 2 weeks →
date - dateTime between: days for dates, hours for timesDec 25 - today →
agoBefore now3 days ago →
later in …After nowin 45 min →
fromAfter a given date2 weeks from today →
until till sinceTime to or from a date, after a unit ("days until") or "time"days until Dec 25 →

Time zones

Convert with in or to ("3pm PST in London"), or write "time in Tokyo" for the current time there.

WriteMeaningExample
PST PDT PTAmerica/Los Angeles
MST MDT MTAmerica/Denver
CST CDT CTAmerica/Chicago
EST EDT ETAmerica/New York
AKSTAmerica/Anchorage
HSTPacific/Honolulu
BRTAmerica/Sao Paulo
BSTEurope/London
WETEurope/Lisbon
CET CESTEurope/Paris
EET EESTEurope/Athens
MSKEurope/Moscow
ISTAsia/Kolkata
PKTAsia/Karachi
ICTAsia/Bangkok
SGTAsia/Singapore
HKTAsia/Hong Kong
JSTAsia/Tokyo
KSTAsia/Seoul
AWSTAustralia/Perth
AEST AEDTAustralia/Sydney
NZST NZDTPacific/Auckland
UTC GMTCoordinated Universal Timenoon UTC in New York →
time in …The current time somewheretime in New York →
UTC+5 GMT-3 UTC+5:30Fixed offsets3pm in UTC+5:30 →
san francisco silicon valley seattle california boston miami atlanta washington nyc dallas houston austin texas hawaii beijing china mumbai delhi new delhi bangalore india japan korea south korea hong kong kyiv uk england britain france germany spain italy netherlands brazil são paulo australia new zealandPlaces and countries, plus every city in the time zone database (Lisbon, Denver, Nairobi…)time in Tokyo →

Currencies

Put a symbol or code before or after the amount ($30, 30 USD, EUR 20). All 166 ISO codes work in uppercase; common ones also in lowercase.

WriteMeaningExample
$USD$100 → $100.00
€EUR€100 → €100.00
£GBP£100 → £100.00
¥JPY¥100 → ¥100
₹INR₹100 → ₹100.00
₩KRW₩100 → ₩100
₽RUB₽100 → RUB 100.00
₺TRY₺100 → TRY 100.00
₪ILS₪100 → ₪100.00
₫VND₫100 → ₫100
₴UAH₴100 → UAH 100.00
₦NGN₦100 → NGN 100.00
฿THB฿100 → THB 100.00
₱PHP₱100 → ₱100.00
₿BTC₿100 → 100 BTC
dollar dollars buck bucks us dollar us dollarsUSD
euro eurosEUR
pound sterling pounds sterling british pound british pounds quidGBP
yen japanese yenJPY
yuan renminbi rmb chinese yuanCNY
rupee rupees indian rupee indian rupeesINR
franc francs swiss franc swiss francsCHF
canadian dollar canadian dollarsCAD
australian dollar australian dollarsAUD
new zealand dollar new zealand dollarsNZD
hong kong dollar hong kong dollarsHKD
singapore dollar singapore dollarsSGD
peso pesos mexican peso mexican pesosMXN
reais brazilian real brazilian reaisBRL
won korean wonKRW
ruble rubles rouble roublesRUB
lira turkish liraTRY
krona swedish krona swedish kronorSEK
krone norwegian krone norwegian kronerNOK
danish krone danish kronerDKK
zloty zlotysPLN
randZAR
shekel shekelsILS
bahtTHB
dongVND
ringgitMYR
rupiahIDR
dirham dirhamsAED
riyal riyalsSAR
usd eur gbp jpy cny inr chf cad aud nzd hkd sgd sek nok dkk pln czk huf mxn brl krw zar rub ils thb myr idr vnd aed sar ars clp cop twdCodes that also work in lowercase100 eur in usd → $111.11
BTC bitcoin bitcoinsCrypto (BTC)
ETH ether ethereumCrypto (ETH)
SOL solanaCrypto (SOL)
DOGE dogecoin dogecoinsCrypto (DOGE)
LTC litecoin litecoinsCrypto (LTC)
XRP rippleCrypto (XRP)
ADA cardanoCrypto (ADA)
USDT tetherCrypto (USDT)
USDCCrypto (USDC)
sat sats satoshi satoshisSatoshis: 0.00000001 BTC100k sats in USD → $100.00

Cooking ingredients

Name one of these on a line, and cups, spoons and ml convert to grams or ounces and back. Weights are approximate. For anything else, give its weight per cup: almond flour = 96 g/cup.

WriteMeaningExample
flour all-purpose flour plain flour bread flourConverts between volume and weight1 cup flour in g → 120 g
whole wheat flour wholemeal flourConverts between volume and weight1 cup whole wheat flour in g → 113 g
sugar granulated sugar white sugar caster sugarConverts between volume and weight1 cup sugar in g → 198 g
brown sugarConverts between volume and weight1 cup brown sugar in g → 213 g
powdered sugar icing sugar confectioners' sugar confectioners sugarConverts between volume and weight1 cup powdered sugar in g → 113 g
butterConverts between volume and weight1 cup butter in g → 227 g
cocoa cocoa powderConverts between volume and weight1 cup cocoa in g → 84 g
oats rolled oatsConverts between volume and weight1 cup oats in g → 89 g
waterConverts between volume and weight1 cup water in g → 236.5882 g
milkConverts between volume and weight1 cup milk in g → 243.6859 g
honey maple syrupConverts between volume and weight1 cup honey in g → 336 g
oil olive oil vegetable oilConverts between volume and weight1 cup oil in g → 217.6612 g

Words that depend on context

WriteMeaningExample
inConverts when a unit, format or place follows; otherwise inches right after a number6 ft 2 in → 6.1667 ft
minMinutes after an amount; otherwise the smallest answer above5 min → 5 min
xTimes between two numbers; otherwise a variable, if defined
mayA month only when a day follows (may 5)
sat sunsat means satoshis. Weekday abbreviations (sat, sun, mon…) only count after next, last or thisnext sat →
now todayOrdinary words when a number follows them directly ("I now have 5")
and or not ifLogic words only between or before values, and if only with a then; otherwise they are text ("salt and pepper")
any nameVariables win over units and keywords: after F = 5, "72 F" is 72 × 5

Units

Every unit, with all the ways to write it. Symbols match exactly (mL, °C); names ignore case (Kilometers).

Length 17
nmnanometer, nanometers, nanometre, nanometres
µmμm, um, micrometer, micrometers, micrometre, micrometres, micron, microns
mmmillimeter, millimeters, millimetre, millimetres
cmcentimeter, centimeters, centimetre, centimetres
mmeter, meters, metre, metres
kmkilometer, kilometers, kilometre, kilometres
in″, inch, inches
ft′, foot, feet
ydyard, yards
mimile, miles
nminautical mile, nautical miles
auAU, astronomical unit, astronomical units
lylight year, light years, lightyear, lightyears
pxpixel, pixels
pt
em
rem
Area 10
mm²mm2, square millimeter, square millimeters, sq mm
cm²cm2, square centimeter, square centimeters, sq cm
m²m2, sqm, square meter, square meters, square metre, square metres, sq m
km²km2, square kilometer, square kilometers, square kilometre, square kilometres, sq km
in²in2, square inch, square inches, sq in
ft²ft2, sqft, square foot, square feet, sq ft
yd²yd2, square yard, square yards, sq yd
mi²mi2, square mile, square miles, sq mi
hahectare, hectares
acreac, acre, acres
Volume 15
mLml, milliliter, milliliters, millilitre, millilitres
cLcl, centiliter, centiliters, centilitre, centilitres
dLdl, deciliter, deciliters, decilitre, decilitres
Ll, liter, liters, litre, litres
cm³cm3, cc, cubic centimeter, cubic centimeters, cubic centimetre, cubic centimetres
m³m3, cubic meter, cubic meters, cubic metre, cubic metres
in³in3, cubic inch, cubic inches
ft³ft3, cubic foot, cubic feet
galgallon, gallons
qtquart, quarts
pintpint, pints
cupcup, cups
fl ozfloz, fl oz, fluid ounce, fluid ounces
tbsptablespoon, tablespoons
tspteaspoon, teaspoons
Mass 8
mgmilligram, milligrams, milligramme, milligrammes
ggram, grams, gramme, grammes
kgkilogram, kilograms, kilogramme, kilogrammes, kilo, kilos
ttonne, tonnes, metric ton, metric tons
ozounce, ounces
lblbs, pound, pounds
ststone, stones
tonton, tons, short ton, short tons
Time 12
nsnanosecond, nanoseconds
µsμs, microsecond, microseconds
msmillisecond, milliseconds
ssec, secs, second, seconds
minmins, minute, minutes
hhr, hrs, hour, hours
dayd, day, days
weekwk, wks, week, weeks
monthmo, month, months
yearyr, yrs, year, years
decadedecade, decades
centurycentury, centuries
Temperature 3
Kkelvin, kelvins
°CC, degC, celsius, centigrade, degree celsius, degrees celsius
°FF, degF, fahrenheit, degree fahrenheit, degrees fahrenheit
Data 15
bitbits, bit
Bbyte, bytes
KBkB, kb, kilobyte, kilobytes
MBmb, megabyte, megabytes
GBgb, gigabyte, gigabytes
TBtb, terabyte, terabytes
PBpb, petabyte, petabytes
kbitKbit, Kb, kilobit, kilobits
MbitMb, megabit, megabits
GbitGb, gigabit, gigabits
TbitTb, terabit, terabits
KiBkib, kibibyte, kibibytes
MiBmib, mebibyte, mebibytes
GiBgib, gibibyte, gibibytes
TiBtib, tebibyte, tebibytes
Data rate 4
bpsbit per second, bits per second
kbpsKbps, kilobit per second, kilobits per second
Mbpsmegabit per second, megabits per second
Gbpsgigabit per second, gigabits per second
Angle 2
radradian, radians
°deg, degree, degrees
Speed 3
mphmiles per hour
kphkmh, kilometers per hour, kilometres per hour
knkt, knot, knots
Energy 7
Jjoule, joules
kJkilojoule, kilojoules
calcalorie, calories
kcalCal, kilocalorie, kilocalories
Whwatt hour, watt hours
kWhkilowatt hour, kilowatt hours
BTUbtu
Power 4
Wwatt, watts
kWkilowatt, kilowatts
MWmegawatt, megawatts
hphorsepower
Pressure 6
Papascal, pascals
kPakilopascal, kilopascals
barbar, bars
psi
atmatmosphere, atmospheres
mmHg
Force 1
Nnewton, newtons
Frequency 4
Hzhertz
kHzkilohertz
MHzmegahertz
GHzgigahertz

Reckon has no server API, because it's a static site. Instead, three kinds of links open notes:

Link Use
https://parmsam.github.io/reckon/#/new?text=<note> Plain-text link. The note is percent-encoded: space %20, new line %0A, $ %24, % %25, + %2B, # %23, & %26. Easy to write by hand, by an LLM, or in any language.
https://parmsam.github.io/reckon/#/share/<name>/<payload> Share link. The note as raw DEFLATE, then base64url without padding. Shorter for long notes. The <name>/ part (letters, digits and -) is only a label and can be left out.
https://parmsam.github.io/reckon/#/note/<id> Older links to a note saved in this browser. The app no longer shows them (the address stays https://parmsam.github.io/reckon/), and they don't work for anyone else.

Plain-text and share links open as a read-only preview with a Save a copy button, so a link can never change someone's notes. The decoder forgives common slips: a raw + stays a plus, and a bare % (as in 20% of) is kept.

const link = 'https://parmsam.github.io/reckon/#/new?text=' + encodeURIComponent(note);
from urllib.parse import quote
link = "https://parmsam.github.io/reckon/#/new?text=" + quote(note, safe="")

# Shorter share link, same format the app uses:
import base64, zlib
c = zlib.compressobj(9, zlib.DEFLATED, -15)  # raw DEFLATE
payload = base64.urlsafe_b64encode(c.compress(note.encode()) + c.flush()).rstrip(b"=").decode()
link = "https://parmsam.github.io/reckon/#/share/" + payload

The engine module

engine.js is Reckon's calculation engine as one self-contained ES module (about 60 KB gzipped). It works in browsers, Node 18+, Deno and notebooks, makes no network requests unless you ask for rates, and includes a recent set of exchange rates.

import { evaluate, noteLink, shareLink } from 'https://parmsam.github.io/reckon/engine.js'; // Deno, browsers
// Node: download it first (curl -O https://parmsam.github.io/reckon/engine.js), then import('./engine.js')

evaluate('hourly rate = $85/h\n37.5 h × hourly rate\n5 km in miles');
// [
//   { line: 1, input: 'hourly rate = $85/h', kind: 'value', result: '$85.00/h', variable: 'hourly rate' },
//   { line: 2, input: '37.5 h × hourly rate', kind: 'value', result: '$3,187.50' },
//   { line: 3, input: '5 km in miles', kind: 'value', result: '3.1069 mi' },
// ]
Export What it does
evaluate(text, options?) Evaluates a note; returns one { line, input, kind, result?, error?, variable? } per line. Options: locale, now (epoch ms), timeZone, rates, precision, unitPrecision, angleUnit, ppi, emPx.
noteLink(text) A plain-text link that opens text in Reckon.
shareLink(text) A compressed share link (async).
decodeShare(payload) The note inside a share link (async).
toText(text, options?) The note with each answer aligned after its line.
toMarkdown(text, options?) The note as Markdown: headings, comments, and | Line | Answer | tables.
toHtml(text, options?) The note as a standalone HTML page (options.title sets its title).
fetchFiatRates(), fetchCryptoRates() Live rates (units per USD) to pass as options.rates.
bundledRates The rates built into this version, with fetchedAt.
evaluateDocument(text, settings) The lower-level engine call, with structured values.

For LLMs and agents

The prompt

Paste this into ChatGPT, Claude or another assistant, then ask for the note you want ("a weekly grocery budget", "convert this recipe to grams"). It answers with a link that opens the note in Reckon. Also at prompt.txt.

You help people write notes for Reckon (https://parmsam.github.io/reckon/), a notepad calculator. In Reckon, each line of
text is a calculation, and the app shows its answer beside the line. You write the note; Reckon
does the math, so never compute or write the answers yourself.

How to write a Reckon note:
- One calculation per line. Descriptive words are fine and ignored: "flights: $420 × 2".
- "# Title" lines are headings, and "//" starts a comment.
- Name values with "=" and reuse them below: "hourly rate = $85/h", then "37.5 h × hourly rate".
  Names can have spaces. Don't reuse unit or keyword names as variables.
- "sum", "avg", "count", "min", "max" cover the lines above, back to the last heading or blank line.
  Lines that themselves use sum/avg are left out, so put a blank line or heading between groups.
- "prev" is the previous answer.
- Define reusable pieces: functions ("tip(bill, rate) = bill × rate") and units ("1 sprint = 2 weeks").
- Compare and branch: "if total > $100 then 10% off total else total".
- Units, currencies and dates work as written below. Convert with "in": "5 km in miles".
- Type numbers with a dot for decimals and commas for thousands: 1,234.5.

Every line Reckon understands, with the answer it shows (answers use sample rates, and dates assume
Thursday, Jan 15, 2026):

Basics:
2 + 3 × 4    → 14
(2 + 3) × 4  → 20
2^10         → 1,024
10 mod 3     → 1
5!           → 120
0.1 + 0.2    → 0.3

Numbers:
1,000,000 + 1_000  → 1,001,000
1.5k + 2M          → 2,001,500
3bn / 1 million    → 3,000
1.5e3              → 1,500
0xFF + 0b1010      → 265
1½                 → 1.5

Text and structure:
3 apples + 2 apples  → 5
rent: 1,200          → 1,200
5 plus 3 times 2     → 11
10 divided by 4      → 2.5

Variables:
monthly rent = 1,200             → 1,200
utilities = 150                  → 150
(monthly rent + utilities) × 12  → 16,200

Your own functions and units:
tip(bill, rate) = bill × rate
tip($80, 18%)                  → $14.40
1 sprint = 2 weeks             → 2 weeks
3 sprints in days              → 42 days
1 dozen = 12                   → 12
3 dozen                        → 36

Previous answers and totals:
groceries: 80  → 80
gas: 45        → 45
dinner: 55     → 55
sum            → 180
median         → 55
avg            → 60
prev × 2       → 120
rent: 1,200  → 1,200
power: 80    → 80
subtotal     → 1,280
food: 300    → 300
subtotal     → 300
grand total  → 1,580
lunch $12 #food   → $12.00
taxi $30 #travel  → $30.00
dinner $45 #food  → $45.00
sum #food         → $57.00

Percentages:
20% of 50          → 10
50 + 10%           → 55
10% off $80        → $72.00
5 as % of 20       → 25%
5 is what % of 20  → 25%
20% of what is 5   → 25

Comparisons and conditions:
5 km > 3 miles                                  → true
0.1 + 0.2 == 0.3                                → true
order = $120                                    → $120.00
if order >= $100 then 10% off order else order  → $108.00
0xF0 | 0x0F                                     → 255

Choices:
transport = car | [train] | fly           → train
if transport == train then $80 else $300  → $80.00
fare = car $120 | [train $80] | fly $300  → $80.00

Units:
5 km in miles      → 3.1069 mi
6 ft 2 in in cm    → 187.96 cm
72 °F in °C        → 22.2222 °C
2 cups in ml       → 473.1765 mL
1 GB / 4 MB        → 250
60 mph in km/h     → 96.5606 km/h
3 m × 4 m          → 12 m²
1 m + 20 cm        → 1.2 m
12pt in px         → 16 px
2 cups flour in g  → 240 g

Money:
$30 in EUR            → €27.00
€20 + $5              → €24.50
hourly rate = $85/h   → $85.00/h
37.5 h × hourly rate  → $3,187.50
0.01 BTC in USD       → $1,000.00

Dates and times:
today + 2 weeks     → Thu, Jan 29
next friday at 3pm  → Fri, Jan 16, 3:00 PM
days until Dec 25   → 344 days
Jan 31 + 1 month    → Sat, Feb 28
3pm + 90 min        → 4:30 PM
3 days ago          → Mon, Jan 12

Time zones:
time in Tokyo      → 9:00 PM GMT+9
3pm PST in London  → 11:00 PM GMT
9:00 EST to CET    → 3:00 PM GMT+1

Functions and formats:
sqrt(16) + cbrt(27)  → 7
round(3.14159, 2)    → 3.14
sin(30)              → 0.5
log(1000)            → 3
2pi                  → 6.2831853072
255 in hex           → 0xFF
1500 in sci          → 1.5e3

When you've written the note, reply with:
1. A link that opens it. If you can run code, prefer a compressed share link (shorter):
     import base64, zlib
     c = zlib.compressobj(9, zlib.DEFLATED, -15)
     payload = base64.urlsafe_b64encode(c.compress(note.encode()) + c.flush()).rstrip(b"=").decode()
     link = "https://parmsam.github.io/reckon/#/share/" + payload
   Otherwise write a plain-text link: https://parmsam.github.io/reckon/#/new?text= followed by the note percent-encoded.
   Encode every character except A–Z a–z 0–9 - _ . ~ (as JavaScript's encodeURIComponent does):
   space %20, new line %0A, $ %24, % %25, + %2B, # %23, & %26, = %3D, : %3A, / %2F, ( %28, ) %29,
   × %C3%97, € %E2%82%AC, ° %C2%B0.
2. The note itself in a code block, so it can be pasted if the link is too long.

Example. For "a quick trip budget", the note is:

# Trip budget
flights: $420 × 2
hotel = 3 nights × $135
food: 25% of hotel
sum

and the plain-text link is:

https://parmsam.github.io/reckon/#/new?text=%23%20Trip%20budget%0Aflights%3A%20%24420%20%C3%97%202%0Ahotel%20%3D%203%20nights%20%C3%97%20%24135%0Afood%3A%2025%25%20of%20hotel%0Asum