Developers
Utility API
The same tested engines that power our in-browser tools, callable as a free JSON API and as a remote MCP server. Text and data only: file processing (images, PDFs) deliberately stays in your browser and never gets a server endpoint.
index.json · openapi.json ·
https://workingfigures.com/api/mcp
Quick start
curl -s https://workingfigures.com/api/v1/list-calculators \
-H "Content-Type: application/json" \
-d '{"locale":"en","page":1,"perPage":3}'
# {"items":[{"slug":"freelance-rate-calculator","name":"Hourly rate calculator","description":"From target income to a defensible quote.","category":"rates","jurisdiction":"global","url":"https://workingfigures.com/calculators/freelance-rate-calculator"},{"slug"…curl -s https://workingfigures.com/api/v1/list-utilities \
-H "Content-Type: application/json" \
-d '{"locale":"en","page":1,"perPage":3}'
# {"items":[{"slug":"csv-to-json","name":"CSV to JSON converter","description":"Paste CSV and get clean JSON instantly. Detects commas, semicolons and tabs, handles quoted fields, and runs entirely in your browser.","kind":"transform","url":"https://workingfigur…curl -s https://workingfigures.com/api/v1/list-datasets \
-H "Content-Type: application/json" \
-d '{"locale":"en","page":1,"perPage":3}'
# {"items":[{"name":"The Freelance Cost Index","description":"Monthly index of what a US freelance business costs to run: tax drag, IRS interest, platform take, card fees, cross-border cost and shelter room.","checked":"2026-09-01","url":"https://workingfigures.…curl -s https://workingfigures.com/api/v1/list-guides \
-H "Content-Type: application/json" \
-d '{"locale":"en","page":1,"perPage":3}'
# {"items":[{"slug":"freelance-slow-season-plan","title":"Plan a freelance slow season with runway math","description":"Model a $3,000 monthly cash burn, see how long $12,000 lasts, and set a trigger for cutting costs before a dry spell empties the account.","pu…curl -s https://workingfigures.com/api/v1/list-news \
-H "Content-Type: application/json" \
-d '{"locale":"en","page":1,"perPage":3}'
# {"items":[{"slug":"upwork-direct-to-us-bank-fee-september-2026","title":"Upwork starts charging $2.99 on Direct to U.S. Bank payouts abroad","description":"From September 1, 2026 each Direct to U.S. Bank withdrawal costs $2.99 if your tax address is outside th…curl -s https://workingfigures.com/api/v1/get-guide \
-H "Content-Type: application/json" \
-d '{"slug":"1099-vs-w2-the-real-math","locale":"en"}'
# {"slug":"1099-vs-w2-the-real-math","title":"1099 vs W-2: the real take-home math","description":"Why dividing a salary by 2,080 hours is a trap, what employer benefits are worth in dollars, and the conversion in both directions.","published":"2026-08-20","upda…curl -s https://workingfigures.com/api/v1/get-news \
-H "Content-Type: application/json" \
-d '{"slug":"example-news-slug","locale":"en"}'curl -s https://workingfigures.com/api/v1/slugify \
-H "Content-Type: application/json" \
-d '{"text":"Cuánto cobrar en 2026"}'
# {"slug":"cuanto-cobrar-en-2026"}curl -s https://workingfigures.com/api/v1/convert-case \
-H "Content-Type: application/json" \
-d '{"text":"working figures utility api","mode":"title"}'
# {"result":"Working Figures Utility Api"}curl -s https://workingfigures.com/api/v1/base64-encode \
-H "Content-Type: application/json" \
-d '{"text":"Working Figures"}'
# {"result":"V29ya2luZyBGaWd1cmVz"}curl -s https://workingfigures.com/api/v1/base64-decode \
-H "Content-Type: application/json" \
-d '{"text":"V29ya2luZyBGaWd1cmVz"}'
# {"result":"Working Figures"}curl -s https://workingfigures.com/api/v1/url-encode \
-H "Content-Type: application/json" \
-d '{"text":"rate = 75 €/hour"}'
# {"result":"rate%20%3D%2075%20%E2%82%AC%2Fhour"}curl -s https://workingfigures.com/api/v1/url-decode \
-H "Content-Type: application/json" \
-d '{"text":"rate%20%3D%2075%20%E2%82%AC%2Fhour"}'
# {"result":"rate = 75 €/hour"}curl -s https://workingfigures.com/api/v1/html-entities-encode \
-H "Content-Type: application/json" \
-d '{"text":"Fees < 1% & \"hidden\" costs"}'
# {"result":"Fees < 1% & "hidden" costs"}curl -s https://workingfigures.com/api/v1/html-entities-decode \
-H "Content-Type: application/json" \
-d '{"text":"Fees < 1% & "hidden" costs"}'
# {"result":"Fees < 1% & \"hidden\" costs"}curl -s https://workingfigures.com/api/v1/json-format \
-H "Content-Type: application/json" \
-d '{"json":"{\"rate\":75,\"currency\":\"USD\",\"hours\":[8,6,7]}","indent":"2"}'
# {"result":"{\n \"rate\": 75,\n \"currency\": \"USD\",\n \"hours\": [\n 8,\n 6,\n 7\n ]\n}"}curl -s https://workingfigures.com/api/v1/csv-to-json \
-H "Content-Type: application/json" \
-d '{"csv":"client,hours,rate\nAcme,12,75\nGlobex,8,90"}'
# {"rows":[{"client":"Acme","hours":12,"rate":75},{"client":"Globex","hours":8,"rate":90}]}curl -s https://workingfigures.com/api/v1/json-to-csv \
-H "Content-Type: application/json" \
-d '{"json":"[{\"client\":\"Acme\",\"hours\":12},{\"client\":\"Globex\",\"hours\":8}]"}'
# {"csv":"client,hours\nAcme,12\nGlobex,8"}curl -s https://workingfigures.com/api/v1/word-count \
-H "Content-Type: application/json" \
-d '{"text":"Freelance rates vary widely by market. Know your floor before you quote."}'
# {"characters":72,"charactersNoSpaces":61,"words":12,"sentences":2,"paragraphs":1,"readingMinutes":1}curl -s https://workingfigures.com/api/v1/diff \
-H "Content-Type: application/json" \
-d '{"original":"rate: 70\nhours: 10","changed":"rate: 75\nhours: 10"}'
# {"lines":[{"type":"del","text":"rate: 70"},{"type":"add","text":"rate: 75"},{"type":"same","text":"hours: 10"}],"stats":{"added":1,"removed":1,"unchanged":1}}curl -s https://workingfigures.com/api/v1/timestamp \
-H "Content-Type: application/json" \
-d '{"value":"1756000000"}'
# {"source":"seconds","unixSeconds":1756000000,"unixMillis":1756000000000,"iso":"2025-08-24T01:46:40.000Z","offsetSeconds":-35368260}curl -s https://workingfigures.com/api/v1/timezone-convert \
-H "Content-Type: application/json" \
-d '{"datetime":"2026-08-23T09:00","from":"Europe/Madrid","to":"America/New_York"}'
# {"epochMs":1787468400000,"iso":"2026-08-23T07:00:00.000Z","target":{"year":2026,"month":8,"day":23,"hour":3,"minute":0},"fromOffset":"UTC+2","toOffset":"UTC-4"}curl -s https://workingfigures.com/api/v1/color-convert \
-H "Content-Type: application/json" \
-d '{"value":"#053a2e"}'
# {"hex":"#053a2e","rgb":"rgb(5, 58, 46)","hsl":"hsl(166, 84%, 12%)","css":"rgb(5, 58, 46)"}curl -s https://workingfigures.com/api/v1/currency-rates \
-H "Content-Type: application/json" \
-d '{}'
# {"date":"2026-10-06","base":"EUR","rates":{"EUR":1,"AUD":1.614,"BRL":5.5991,"CAD":1.6058,"CHF":0.9359,"CNY":7.5554,"CZK":24.405,"DKK":7.4747,"GBP":0.8488,"HKD":8.8438,"HUF":364.95,"IDR":20104.8,"ILS":3.4348,"INR":108.6615,"ISK":137.2,"JPY":178.15,"KRW":1508.67…curl -s https://workingfigures.com/api/v1/currency-convert \
-H "Content-Type: application/json" \
-d '{"amount":1500,"from":"EUR","to":"USD"}'
# {"result":1690.35,"rate":1.1269,"date":"2026-10-06","note":"ECB reference rate: informational mid-market figure, not a tradable price."}curl -s https://workingfigures.com/api/v1/convert-data \
-H "Content-Type: application/json" \
-d '{"text":"users:\n - id: 1\n name: Ada","from":"yaml","to":"toon"}'
# {"result":"users[1]{id,name}:\n 1,Ada"}curl -s https://workingfigures.com/api/v1/json-to-toon \
-H "Content-Type: application/json" \
-d '{"text":"{\"users\":[{\"id\":1,\"name\":\"Ada\"},{\"id\":2,\"name\":\"Bob\"}]}"}'
# {"result":"users[2]{id,name}:\n 1,Ada\n 2,Bob","approxTokens":{"json":39,"toon":16}}curl -s https://workingfigures.com/api/v1/toon-to-json \
-H "Content-Type: application/json" \
-d '{"text":"users[2]{id,name}:\n 1,Ada\n 2,Bob"}'
# {"result":"{\n \"users\": [\n {\n \"id\": 1,\n \"name\": \"Ada\"\n },\n {\n \"id\": 2,\n \"name\": \"Bob\"\n }\n ]\n}"}curl -s https://workingfigures.com/api/v1/uuid \
-H "Content-Type: application/json" \
-d '{"count":2}'
# {"uuids":["6cbd3b98-387a-446b-ab8b-939b95693d0b","6ff6e38f-6d01-4dfd-849c-c6c9a5e72243"]}curl -s https://workingfigures.com/api/v1/lorem-ipsum \
-H "Content-Type: application/json" \
-d '{"count":2,"unit":"sentences"}'
# {"text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Consequat amet nostrud excepteur eiusmod laborum irure aute irure esse culpa et aute anim."}curl -s https://workingfigures.com/api/v1/hourly-to-salary \
-H "Content-Type: application/json" \
-d '{"hourlyRate":85,"billableHoursPerWeek":30,"weeksWorked":48,"healthMonthly":550,"matchPct":4}'
# {"contractAnnualRevenue":122400,"w2SalaryEquivalent":103716.97268248993,"benefitsValue":18683.02731751008,"contractPremium":0.18013471502590672,"billableHoursPerYear":1440}curl -s https://workingfigures.com/api/v1/savings-goal \
-H "Content-Type: application/json" \
-d '{"monthlyExpenses":3200,"targetMonths":6,"currentSavings":5000,"monthlySaving":800}'
# {"targetFund":19200,"gap":14200,"progress":0.2604166666666667,"monthsToGoal":17.75,"series":[5000,5800,6600,7400,8200,9000,9800,10600,11400,12200,13000,13800,14600,15400,16200,17000,17800,18600,19200]}curl -s https://workingfigures.com/api/v1/estimated-tax-penalty \
-H "Content-Type: application/json" \
-d '{"requiredAnnual":20000,"paidPerQuarter":[0,5000,5000,5000]}'
# {"totalPenalty":339.45205479452056,"periods":[{"dueDate":"2026-04-15","underpayment":5000,"days":61,"interest":50.136986301369866},{"dueDate":"2026-06-15","underpayment":5000,"days":92,"interest":86.02739726027397},{"dueDate":"2026-09-15","underpayment":5000,"…curl -s https://workingfigures.com/api/v1/invoice-aging \
-H "Content-Type: application/json" \
-d '{"invoices":[{"client":"Adler Studio","reference":"INV-038","amount":1800,"dueDate":"2026-08-01"},{"client":"Vela Media","reference":"INV-019","amount":2500,"dueDate":"2026-04-15"}],"today":"2026-08-23","annualRatePct":12}'
# {"rows":[{"client":"Vela Media","reference":"INV-019","amount":2500,"dueDate":"2026-04-15","daysLate":130,"bucket":"d90plus","interest":106.84931506849314},{"client":"Adler Studio","reference":"INV-038","amount":1800,"dueDate":"2026-08-01","daysLate":22,"bucke…curl -s https://workingfigures.com/api/v1/transfer-fees \
-H "Content-Type: application/json" \
-d '{"amount":5000,"pctFee":0.55,"fixedFee":0,"fxMarkupPct":0,"recipientFee":0}'
# {"checked":"2026-09-01","custom":{"id":"custom","name":"custom","explicitFee":27.500000000000004,"fxCost":0,"recipientFee":0,"totalCost":27.500000000000004,"received":4972.5,"effectivePct":0.0055000000000000005,"fxDisclosed":true,"source":"","noteKey":""},"pro…curl -s https://workingfigures.com/api/v1/cash-flow-forecast \
-H "Content-Type: application/json" \
-d '{"openingBalance":8000,"invoices":[{"client":"Adler Studio","amount":4000,"expectedDate":"2026-09-10"}],"recurring":[{"label":"Rent","amount":1400,"dayOfMonth":1}],"otherMonthlySpend":1500,"today":"2026-08-23","horizonDays":90}'
# {"endingBalance":3300,"lowestBalance":3300,"lowestDate":"2026-11-20","firstNegativeDate":null,"totalInflow":4000,"totalOutflow":8700,"days":[{"date":"2026-08-23","inflow":0,"outflow":50,"balance":7950},{"date":"2026-08-24","inflow":0,"outflow":50,"balance":790…curl -s https://workingfigures.com/api/v1/llc-costs \
-H "Content-Type: application/json" \
-d '{"state":"CA"}'
# {"checked":"2026-08-23","state":{"code":"CA","name":"California","filingFee":70,"reportFee":20,"reportCadence":"biennial","annualTax":800,"source":"https://bizfileonline.sos.ca.gov","note":"Filing fee ($70) and biennial Statement of Information fee ($20, LLC-1…curl -s https://workingfigures.com/api/v1/timezone-abbreviation \
-H "Content-Type: application/json" \
-d '{"code":"CST"}'
# {"at":"2026-10-07T10:17:39.925Z","code":"CST","ambiguous":true,"meanings":[{"code":"CST","slug":"cst","region":"US central states","zone":"America/Chicago","kind":"standard","sibling":"CDT","offsetMinutes":-360,"offset":"UTC-6","activeNow":false,"time":{"hour"…curl -s https://workingfigures.com/api/v1/year-end-checklist \
-H "Content-Type: application/json" \
-d '{"plannedPurchases":true,"hasInvestments":true,"behindOnQuarterlies":true}'
# {"sections":[{"section":"timing","items":["invoiceNow","chaseReceivables"]},{"section":"deductions","items":["expenseSweep","prepayEligible","buyBeforeDec31","placedInService"]},{"section":"retirement","items":["openPlanNote"]},{"section":"investments","items"…curl -s https://workingfigures.com/api/v1/mortgage-affordability \
-H "Content-Type: application/json" \
-d '{"country":"us","netProfit":90000,"yearsTrading":3,"otherDebtMonthly":500,"deposit":60000,"ratePct":6.5,"termYears":30,"extraDeduction":10000,"marginalTaxPct":30}'
# {"qualifyingAnnualIncome":90000,"qualifyingMonthlyIncome":7500,"maxMonthlyPayment":2875,"maxLoan":454856.1061690851,"maxProperty":514856.1061690851,"depositIsTheLimit":false,"meetsHistory":true,"rule":{"model":"payment-ratio","maxDebtSharePct":45,"incomeMultip…curl -s https://workingfigures.com/api/v1/conference-trip-cost \
-H "Content-Type: application/json" \
-d '{"ticket":700,"travel":550,"lodgingPerNight":180,"nights":3,"mealsPerDay":60,"daysAway":4,"billableDaysLost":3,"dayRate":900,"otherCosts":60,"marginalTaxPct":32}'
# {"lines":[{"id":"ticket","amount":700,"deductible":700},{"id":"travel","amount":550,"deductible":550},{"id":"lodging","amount":540,"deductible":540},{"id":"meals","amount":240,"deductible":120},{"id":"other","amount":60,"deductible":60}],"cashCost":2090,"lostB…curl -s https://workingfigures.com/api/v1/es-pension-jubilacion \
-H "Content-Type: application/json" \
-d '{"periods":[{"years":12,"regimen":"general","monthlyBase":1800},{"years":18,"regimen":"reta","monthlyBase":1200}],"retirementAge":66.83}'
# {"monthsCotizados":360,"yearsCotizados":30,"eligible":true,"percentage":85.18,"baseReguladora":1178.4406664206851,"brMethod":"b302","brMethodA":1172.5714285714287,"brMethodB":1178.4406664206851,"ordinaryAgeMonths":802,"anticipationMonths":0,"delayMonths":0,"br…curl -s https://workingfigures.com/api/v1/es-modelo-130 \
-H "Content-Type: application/json" \
-d '{"quarters":[{"ingresos":12000,"gastos":3000,"retenciones":1800},{"ingresos":12000,"gastos":3000,"retenciones":1800}],"priorYearNet":28000,"actividad":"general","pctIncomeWithRetencion":60}'
# {"quarters":[{"quarter":1,"baseAcumulada":9000,"cuota":1800,"minoracion":0,"pagosAnteriores":0,"retencionesAcumuladas":1800,"aPagar":0},{"quarter":2,"baseAcumulada":18000,"cuota":3600,"minoracion":0,"pagosAnteriores":0,"retencionesAcumuladas":3600,"aPagar":0},…curl -s https://workingfigures.com/api/v1/es-nomina-bruto-neto \
-H "Content-Type: application/json" \
-d '{"annualGross":30000,"pagas":14,"contract":"indefinido","ccaa":"es-md","children":2,"childrenUnder3":1,"age":38}'
# {"monthlyBase":2500,"workerRatePct":6.5,"annualSs":1950,"reduccionTrabajo":0,"baseImponible":26050,"minimo":13450,"annualIrpf":3183.6527700000006,"irpfEstatal":1687.5,"irpfAutonomico":1496.1527700000001,"retencionPct":10.612175900000002,"annualNet":24866.34723…curl -s https://workingfigures.com/api/v1/uk-state-pension \
-H "Content-Type: application/json" \
-d '{"qualifyingYears":22,"futureYears":8,"boughtYears":3}'
# {"effectiveYears":33,"yearsShort":2,"weekly":227.51142857142858,"annual":11830.594285714285,"sharePct":94.28571428571428,"valuePerYear":358.5028571428572,"costPerYear":956.8,"paybackYears":2.668876916701201,"boughtValue":1075.5085714285715,"boughtCost":2870.39…curl -s https://workingfigures.com/api/v1/us-social-security-estimate \
-H "Content-Type: application/json" \
-d '{"averageAnnualEarnings":70000,"yearsWorked":30,"claimAge":67,"selfEmployed":true}'
# {"coveredEarnings":64645,"zeroYears":5,"aime":4617.5,"pia":2223.48,"claimAdjustmentPct":0,"monthlyBenefit":2223.48,"annualBenefit":26681.760000000002,"replacementRate":0.381168,"eligible":true,"bendPointYear":2026,"rulesChecked":"2026-08","note":"Level earning…curl -s https://workingfigures.com/api/v1/finance-score \
-H "Content-Type: application/json" \
-d '{"netProfit":90000,"entity":"sole","quarterlies":"some","retirementContributed":0,"expenseTracking":"manual","homeOfficeSqft":120,"homeOfficeClaimed":false,"businessMiles":2500,"mileageLogged":false,"topClientPct":45,"monthlyExpenses":4500,"cashReserve":9000}'
# {"score":32,"band":"atRisk","domains":[{"id":"structure","score":28,"weight":0.2},{"id":"payments","score":50,"weight":0.2},{"id":"deductions","score":20,"weight":0.15},{"id":"retirement","score":0,"weight":0.15},{"id":"buffer","score":33,"weight":0.15},{"id":…curl -s https://workingfigures.com/api/v1/cost-index \
-H "Content-Type: application/json" \
-d '{}'
# {"id":"2026-09","published":"2026-09-01","score":5.3,"band":"mixed","components":[{"id":"taxDrag","value":0.2526,"source":"IRS Rev. Proc. 2024-40 (2025 brackets), SSA wage base; our quarterly tax engine at $90,000 profit","checked":"2026-09-01","weight":0.25,"… Content endpoints
Endpoint reference text below is spec material and stays in English; the tool pages linked in the first column are fully localized.
| POST /api/v1/… | What it does | On the site |
|---|---|---|
| list-datasets | Paginated catalog of the published datasets under /data, with the date each was last checked. | Preview JSON: raw response from list-datasets |
| list-calculators | Paginated catalog of the money calculators (name, description, URL). | Go: open the list-calculators page Preview JSON: raw response from list-calculators |
| list-utilities | Paginated catalog of the in-browser utilities under /convert. | Go: open the list-utilities page Preview JSON: raw response from list-utilities |
| list-guides | Paginated catalog of published guides (title, description, dates, URL). | Go: open the list-guides page Preview JSON: raw response from list-guides |
| get-guide | Read one published guide in full: metadata plus the Markdown body. | Go: open the get-guide page Preview JSON: raw response from get-guide |
| list-news | Paginated news briefs (title, description, publish time, sources, URL). | Go: open the list-news page Preview JSON: raw response from list-news |
| get-news | Read one news brief in full: metadata, sources and the Markdown body. | Go: open the get-news page Preview JSON: raw response from get-news |
Calculator endpoints
| POST /api/v1/… | What it does | On the site |
|---|---|---|
| hourly-to-salary | Convert a contract hourly rate into the W-2 salary that costs an employer the same. | Go: open the hourly-to-salary page Preview JSON: raw response from hourly-to-salary |
| savings-goal | Size an emergency fund in months of expenses and time the gap at a saving pace. | Go: open the savings-goal page Preview JSON: raw response from savings-goal |
| estimated-tax-penalty | IRS underpayment interest per quarter at the published rates (Form 2210 chart method). | Go: open the estimated-tax-penalty page Preview JSON: raw response from estimated-tax-penalty |
| invoice-aging | Age a list of unpaid invoices into 30/60/90 buckets and price the delay. | Go: open the invoice-aging page Preview JSON: raw response from invoice-aging |
| transfer-fees | Cost of a cross-border payment at published provider pricing, exchange-rate markup included. | Go: open the transfer-fees page Preview JSON: raw response from transfer-fees |
| cash-flow-forecast | Daily cash balance over a horizon from expected payments and fixed costs. | Go: open the cash-flow-forecast page Preview JSON: raw response from cash-flow-forecast |
| llc-costs | LLC filing, report and annual tax costs for all 50 US states and DC, with first-year and recurring totals. | Go: open the llc-costs page Preview JSON: raw response from llc-costs |
| year-end-checklist | Build the December tax checklist for a freelancer situation (six booleans in, sections out). | Go: open the year-end-checklist page Preview JSON: raw response from year-end-checklist |
| mortgage-affordability | Indicative self-employed borrowing capacity from net profit (US, ES, UK rule sets), plus what an extra deduction costs in borrowing power. | Go: open the mortgage-affordability page Preview JSON: raw response from mortgage-affordability |
| conference-trip-cost | True cost of a conference trip: cash plus the billing lost, net of the deduction (US meals limited to 50%). | Go: open the conference-trip-cost page Preview JSON: raw response from conference-trip-cost |
| es-pension-jubilacion | Spanish state pension estimate from a career of periods (employee, self-employed or mixed), with the 2026 dual base reguladora and the early or delayed retirement adjustment. | Go: open the es-pension-jubilacion page Preview JSON: raw response from es-pension-jubilacion |
| es-modelo-130 | Spanish modelo 130 quarterly income-tax prepayment: 20% of the profit accumulated since January, net of earlier payments, client withholding and the low-income reduction. | Go: open the es-modelo-130 page Preview JSON: raw response from es-modelo-130 |
| es-nomina-bruto-neto | Spanish employee gross-to-net pay: 2026 worker Social Security rates, IRPF withholding and the net figure per payslip at 12 or 14 payments. | Go: open the es-nomina-bruto-neto page Preview JSON: raw response from es-nomina-bruto-neto |
| uk-state-pension | UK new State Pension forecast from qualifying years, with the shortfall to the full rate and the payback on a voluntary Class 3 top-up. | Go: open the uk-state-pension page Preview JSON: raw response from uk-state-pension |
| us-social-security-estimate | Social Security retirement benefit estimate: AIME over 35 years, 2026 bend points, claiming-age adjustment and the 92.35% self-employment coverage haircut. | Go: open the us-social-security-estimate page Preview JSON: raw response from us-social-security-estimate |
| finance-score | Freelance finance readiness score out of 100 across six weighted areas, with each gap priced in dollars a year. | Go: open the finance-score page Preview JSON: raw response from finance-score |
| cost-index | The Freelance Cost Index: a published monthly reading (0-10) of what running a US freelance business costs, with every component scored, weighted and sourced. | Go: open the cost-index page Preview JSON: raw response from cost-index |
Utility endpoints
| POST /api/v1/… | What it does | On the site |
|---|---|---|
| slugify | Turn a title into a URL slug (lowercase, hyphens, accents stripped). | Go: open the slugify page Preview JSON: raw response from slugify |
| convert-case | Convert text between casings (upper, lower, title, sentence, camel, pascal, snake, kebab, constant). | Go: open the convert-case page Preview JSON: raw response from convert-case |
| base64-encode | Base64-encode UTF-8 text. | Go: open the base64-encode page Preview JSON: raw response from base64-encode |
| base64-decode | Decode Base64 back to UTF-8 text. | Go: open the base64-decode page Preview JSON: raw response from base64-decode |
| url-encode | Percent-encode text for URLs and query strings. | Go: open the url-encode page Preview JSON: raw response from url-encode |
| url-decode | Decode percent-encoded text (+ treated as space). | Go: open the url-decode page Preview JSON: raw response from url-decode |
| html-entities-encode | Escape reserved and non-ASCII characters as HTML entities. | Go: open the html-entities-encode page Preview JSON: raw response from html-entities-encode |
| html-entities-decode | Decode named and numeric HTML entities to text. | Go: open the html-entities-decode page Preview JSON: raw response from html-entities-decode |
| json-format | Validate and pretty-print or minify JSON. | Go: open the json-format page Preview JSON: raw response from json-format |
| csv-to-json | Parse CSV (auto delimiter) into an array of typed objects. | Go: open the csv-to-json page Preview JSON: raw response from csv-to-json |
| json-to-csv | Turn a JSON array of objects into RFC 4180 CSV. | Go: open the json-to-csv page Preview JSON: raw response from json-to-csv |
| word-count | Words, characters, sentences, paragraphs and reading time. | Go: open the word-count page Preview JSON: raw response from word-count |
| diff | Line diff (LCS) between two texts, with counts. | Go: open the diff page Preview JSON: raw response from diff |
| timestamp | Parse a Unix timestamp (s/ms/us) or date string into every view. | Go: open the timestamp page Preview JSON: raw response from timestamp |
| timezone-convert | Convert a wall-clock time between IANA timezones (DST-aware). | Go: open the timezone-convert page Preview JSON: raw response from timezone-convert |
| color-convert | Parse a color (hex, rgb(), hsl(), triplet) into hex, rgb and hsl. | Go: open the color-convert page Preview JSON: raw response from color-convert |
| currency-rates | Daily ECB reference rates (EUR base) with their date. | Go: open the currency-rates page Preview JSON: raw response from currency-rates |
| currency-convert | Convert an amount between currencies using ECB reference rates. | Go: open the currency-convert page Preview JSON: raw response from currency-convert |
| convert-data | Convert a document between JSON, YAML, TOON and CSV in any direction. | Go: open the convert-data page Preview JSON: raw response from convert-data |
| json-to-toon | Convert JSON to TOON, the token-oriented format that writes repeated object keys once. | Go: open the json-to-toon page Preview JSON: raw response from json-to-toon |
| toon-to-json | Convert TOON back to JSON, expanding tabular rows into full objects. | Go: open the toon-to-json page Preview JSON: raw response from toon-to-json |
| uuid | Generate random v4 UUIDs (1-100). | Go: open the uuid page Preview JSON: raw response from uuid |
| lorem-ipsum | Generate lorem ipsum filler (paragraphs, sentences or words). | Go: open the lorem-ipsum page Preview JSON: raw response from lorem-ipsum |
| timezone-abbreviation | Resolve a time zone abbreviation (CET, EST, JST) to its offset, region and every other meaning it has. | Go: open the timezone-abbreviation page Preview JSON: raw response from timezone-abbreviation |
MCP server
Every endpoint here is also available as a tool on our remote MCP server, no account or key needed. Full MCP setup guide.
Limits
Free, no key, CORS open, soft limit of 60 requests per minute per IP. No uptime promise: for guaranteed throughput, take the engines (they ship readable in the site bundle) and self-host.
What we log
Requests hit a serverless function that keeps an in-memory counter per IP for rate limiting and nothing else: request bodies are processed and discarded, never stored. The in-browser tools remain the zero-server option.