POST/api/v1/tools/text-diff
Text Diff
Compare two texts and return a structured diff with additions, deletions, and unchanged lines.
Try the browser version of this tool
· Request body
· request.json
{
"original": "Hello world",
"modified": "Hello there, world!"
}
· Response
· response.json
{
"changes": [
{
"type": "equal",
"value": "Hello "
},
{
"type": "delete",
"value": "world"
},
{
"type": "insert",
"value": "there, world!"
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/text-diff \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"original":"Hello world","modified":"Hello there, world!"}'
POST/api/v1/tools/markdown-to-html
Markdown to HTML
Convert Markdown content to sanitized HTML. Supports GFM tables, code blocks, and task lists.
Try the browser version of this tool
· Request body
· request.json
{
"markdown": "# Hello\n\nThis is **bold** text."
}
· Response
· response.json
{
"html": "<h1>Hello</h1>\n<p>This is <strong>bold</strong> text.</p>"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/markdown-to-html \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"markdown":"# Hello\n\nThis is **bold** text."}'
POST/api/v1/tools/csv-to-json
CSV to JSON
Parse CSV data into a JSON array of objects. Auto-detects delimiters and handles quoted fields.
Try the browser version of this tool
· Request body
· request.json
{
"csv": "name,age\nAlice,30\nBob,25",
"delimiter": ","
}
· Response
· response.json
{
"data": [
{
"name": "Alice",
"age": "30"
},
{
"name": "Bob",
"age": "25"
}
],
"rows": 2,
"columns": 2
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/csv-to-json \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"csv":"name,age\nAlice,30\nBob,25","delimiter":","}'
POST/api/v1/tools/url-encoder
URL Encoder/Decoder
Encode or decode URL components. Handles special characters and unicode.
Try the browser version of this tool
· Request body
· request.json
{
"text": "hello world & foo=bar",
"mode": "encode"
}
· Response
· response.json
{
"result": "hello%20world%20%26%20foo%3Dbar"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/url-encoder \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"hello world & foo=bar","mode":"encode"}'
POST/api/v1/tools/base64
Base64 Encode/Decode
Encode text to Base64 or decode Base64 strings back to plain text.
Try the browser version of this tool
· Request body
· request.json
{
"text": "Hello, ToolForte!",
"mode": "encode"
}
· Response
· response.json
{
"result": "SGVsbG8sIFRvb2xGb3J0ZSE="
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/base64 \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"Hello, ToolForte!","mode":"encode"}'
POST/api/v1/tools/regex-tester
Regex Tester
Test a regular expression against a string. Returns all matches with groups and indices.
Try the browser version of this tool
· Request body
· request.json
{
"pattern": "(\\d{4})-(\\d{2})-(\\d{2})",
"flags": "g",
"text": "Today is 2026-04-08 and tomorrow is 2026-04-09."
}
· Response
· response.json
{
"matches": [
{
"match": "2026-04-08",
"index": 9,
"groups": [
"2026",
"04",
"08"
]
},
{
"match": "2026-04-09",
"index": 37,
"groups": [
"2026",
"04",
"09"
]
}
],
"count": 2
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/regex-tester \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"pattern":"(\\d{4})-(\\d{2})-(\\d{2})","flags":"g","text":"Today is 2026-04-08 and tomorrow is 2026-04-09."}'
POST/api/v1/tools/color-converter
Color Converter
Convert colors between HEX, RGB, HSL, and HSB formats. Returns all representations.
Try the browser version of this tool
· Request body
· request.json
{
"color": "#4338ca",
"format": "hex"
}
· Response
· response.json
{
"hex": "#4338ca",
"rgb": {
"r": 67,
"g": 56,
"b": 202
},
"hsl": {
"h": 245,
"s": 58,
"l": 51
},
"hsb": {
"h": 245,
"s": 72,
"b": 79
}
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/color-converter \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"color":"#4338ca","format":"hex"}'
POST/api/v1/tools/password-strength
Password Strength
Analyze password strength and return a score with detailed feedback and suggestions.
Try the browser version of this tool
· Request body
· request.json
{
"password": "MyS3cur3P@ss!"
}
· Response
· response.json
{
"score": 4,
"label": "Strong",
"crack_time": "centuries",
"feedback": {
"suggestions": [],
"warning": null
}
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/password-strength \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"password":"MyS3cur3P@ss!"}'
POST/api/v1/tools/word-counter
Word Counter
Count words, characters, sentences, and paragraphs. Estimates reading and speaking time.
Try the browser version of this tool
· Request body
· request.json
{
"text": "The quick brown fox jumps over the lazy dog."
}
· Response
· response.json
{
"words": 9,
"characters": 44,
"characters_no_spaces": 36,
"sentences": 1,
"paragraphs": 1,
"reading_time_seconds": 2
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/word-counter \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"The quick brown fox jumps over the lazy dog."}'
POST/api/v1/tools/cron-parser
Cron Parser
Parse a cron expression into a human-readable description and list the next N scheduled runs.
Try the browser version of this tool
· Request body
· request.json
{
"expression": "0 9 * * MON-FRI",
"count": 3
}
· Response
· response.json
{
"description": "At 09:00 on every day-of-week from Monday through Friday",
"next_runs": [
"2026-04-09T09:00:00Z",
"2026-04-10T09:00:00Z",
"2026-04-11T09:00:00Z"
],
"valid": true
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/cron-parser \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"expression":"0 9 * * MON-FRI","count":3}'
POST/api/v1/tools/uuid-generator
UUID Generator
Generate one or more UUIDs (v4). Optionally return as uppercase or without dashes.
Try the browser version of this tool
· Request body
· request.json
{
"count": 2,
"uppercase": false
}
· Response
· response.json
{
"uuids": [
"f47ac10b-58cc-4372-a567-0e02b2c3d479",
"7c9e6679-7425-40de-944b-e07fc1f90ae7"
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/uuid-generator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"count":2,"uppercase":false}'
POST/api/v1/tools/iban-validator
IBAN Validator
Validate an IBAN number. Returns country, bank code, and checksum verification.
Try the browser version of this tool
· Request body
· request.json
{
"iban": "DE89370400440532013000"
}
· Response
· response.json
{
"valid": true,
"country": "Germany",
"country_code": "DE",
"bank_code": "37040044",
"checksum": "89"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/iban-validator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"iban":"DE89370400440532013000"}'
POST/api/v1/tools/slug-generator
Slug Generator
Convert any text into a URL-friendly slug. Handles unicode, diacritics, and special characters.
Try the browser version of this tool
· Request body
· request.json
{
"text": "Hello World! This is a Test.",
"separator": "-"
}
· Response
· response.json
{
"slug": "hello-world-this-is-a-test"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/slug-generator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"Hello World! This is a Test.","separator":"-"}'
POST/api/v1/tools/email-validator
Email Validator
Validate email address syntax and check for common typos in popular domain names.
· Request body
· request.json
{
"email": "user@gmial.com"
}
· Response
· response.json
{
"valid": true,
"syntax_ok": true,
"suggestion": "user@gmail.com",
"disposable": false
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/email-validator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"email":"user@gmial.com"}'
POST/api/v1/tools/vat-calculator
VAT Calculator
Add VAT to a net amount or extract VAT from a gross amount, at any rate. Built for invoicing and pricing flows.
Try the browser version of this tool
· Request body
· request.json
{
"amount": 100,
"rate": 21,
"mode": "add"
}
· Response
· response.json
{
"net": 100,
"vat": 21,
"gross": 121,
"rate": 21
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/vat-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"amount":100,"rate":21,"mode":"add"}'
POST/api/v1/tools/vat-number-check
VAT Number Format Check
Validate the format of EU (plus GB/CH) VAT numbers before storing them. Syntax check only, no VIES lookup.
Try the browser version of this tool
· Request body
· request.json
{
"vatNumber": "NL123456789B01"
}
· Response
· response.json
{
"input": "NL123456789B01",
"normalized": "NL123456789B01",
"country": "NL",
"validFormat": true,
"note": "Format is valid. This is a syntax check only; use the EU VIES service to confirm registration."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/vat-number-check \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"vatNumber":"NL123456789B01"}'
POST/api/v1/tools/dutch-holidays
Dutch Public Holidays
All Dutch public holidays for a given year, including movable feasts like Easter, Ascension Day, and King's Day.
Try the browser version of this tool
· Request body
· request.json
{
"year": 2026
}
· Response
· response.json
{
"year": 2026,
"holidays": [
{
"date": "2026-04-27",
"name": "Koningsdag",
"nameEn": "King's Day",
"dayOff": true
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/dutch-holidays \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"year":2026}'
POST/api/v1/tools/working-days
Working Days Calculator
Count working days (Monday to Friday) between two dates, optionally excluding Dutch public holidays. Ideal for SLA and payroll calculations.
Try the browser version of this tool
· Request body
· request.json
{
"start": "2026-09-01",
"end": "2026-09-30",
"excludeDutchHolidays": true
}
· Response
· response.json
{
"start": "2026-09-01",
"end": "2026-09-30",
"totalDays": 30,
"workingDays": 22,
"weekendDays": 8,
"holidaysExcluded": []
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/working-days \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"start":"2026-09-01","end":"2026-09-30","excludeDutchHolidays":true}'
POST/api/v1/tools/test-bsn-generator
Test BSN Generator
Generate Dutch BSN test numbers that pass the elfproef (11-check) but are not linked to real persons. For development and test environments.
Try the browser version of this tool
· Request body
· request.json
{
"count": 3
}
· Response
· response.json
{
"count": 3,
"bsns": [
"111222333",
"123456782",
"987654321"
],
"note": "Test numbers that pass the elfproef (11-check). They are not linked to real persons."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/test-bsn-generator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"count":3}'
POST/api/v1/tools/test-iban-generator
Test IBAN Generator
Generate structurally valid test IBANs (correct mod-97 check digits) for NL, DE, BE, FR, or GB that are not linked to real bank accounts. For development and test environments.
Try the browser version of this tool
· Request body
· request.json
{
"country": "NL",
"count": 3
}
· Response
· response.json
{
"count": 3,
"country": "NL",
"ibans": [
"NL91ABNA0417164300",
"NL02RABO0123456789",
"NL39INGB0001234567"
],
"note": "Structurally valid IBANs (correct mod-97 check digits) not linked to real bank accounts. For test environments only."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/test-iban-generator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"country":"NL","count":3}'
POST/api/v1/tools/brp-test-data-generator
BRP Test Data Generator
Generate Dutch BRP/GBA test persons: valid BSNs, families, addresses and life events. Every setting on the tool page is a field here, and the same seed always returns the same people, so a test suite can assert on fixed values. Formats: json, csv, gba-totaalfile. Full parameter reference at /developers/generators.
Try the browser version of this tool
· Request body
· request.json
{
"format": "json",
"options": {
"count": 25,
"seed": 20270101,
"minAge": 60,
"maxAge": 80,
"eventMix": {
"married": 5,
"widowed": 3,
"deceased": 1
}
}
}
· Response
· response.json
{
"format": "json",
"count": 25,
"seed": 20270101,
"people": [
{
"bsn": "123456782",
"lastName": "de Vries",
"dateOfBirth": "19620314",
"lifeEvent": "married"
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/brp-test-data-generator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"format":"json","options":{"count":25,"seed":20270101,"minAge":60,"maxAge":80,"eventMix":{"married":5,"widowed":3,"deceased":1}}}'
POST/api/v1/tools/upa-file-generator
UPA File Generator
Generate UPA pension declaration XML for one or more periods: employments, schemes, household situations and, when you ask for them, deliberate defects that the receiving system should reject. Every setting on the tool page is a field here and the seed makes it repeatable. Formats: xml, summary, participants-csv. Full parameter reference at /developers/generators.
Try the browser version of this tool
· Request body
· request.json
{
"format": "xml",
"options": {
"schemeType": "FPR",
"population": {
"count": 50,
"seed": 20270101
},
"period": {
"startYear": 2027,
"startMonth": 1,
"months": 3
},
"defects": {
"invalidBsn": true
}
}
}
· Response
· response.json
{
"format": "xml",
"fileCount": 3,
"peopleCount": 50,
"warnings": [
"1 deliberate defect injected. These files are meant to be rejected."
],
"files": [
{
"name": "UPA_202701_001.xml",
"periodLabel": "2027-01",
"employments": 50,
"content": "<?xml version=\"1.0\"?>…"
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/upa-file-generator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"format":"xml","options":{"schemeType":"FPR","population":{"count":50,"seed":20270101},"period":{"startYear":2027,"startMonth":1,"months":3},"defects":{"invalidBsn":true}}}'
POST/api/v1/tools/text-case-converter
Text Case Converter
Convert a text to one case style: upper, lower, title, sentence, camel, pascal, snake or kebab. Returns the converted string.
Try the browser version of this tool
· Request body
· request.json
{
"text": "hello world from ToolForte",
"mode": "snake"
}
· Response
· response.json
{
"result": "hello_world_from_tool_forte",
"mode": "snake"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/text-case-converter \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"hello world from ToolForte","mode":"snake"}'
POST/api/v1/tools/lorem-ipsum-generator
Lorem Ipsum Generator
Generate classic lorem ipsum placeholder text as paragraphs, sentences, words or a list, optionally wrapped in HTML. Deterministic: the same options give the same text.
Try the browser version of this tool
· Request body
· request.json
{
"count": 2,
"type": "sentences",
"startWithLorem": true,
"html": false,
"seed": 1
}
· Response
· response.json
{
"text": "Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor incididunt. Lorem ipsum dolor sit amet consectetur adipiscing elit.",
"type": "sentences",
"count": 2,
"words": 26,
"characters": 172,
"paragraphs": 1
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/lorem-ipsum-generator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"count":2,"type":"sentences","startWithLorem":true,"html":false,"seed":1}'
POST/api/v1/tools/sort-lines
Sort Lines
Sort the lines of a text A to Z, Z to A, by length, in natural numeric order, or shuffle them with a seed. Can drop duplicates and ignore case. Returns the sorted text and line count.
Try the browser version of this tool
· Request body
· request.json
{
"text": "banana\napple\nCherry\nitem10\nitem2",
"mode": "natural",
"caseInsensitive": true,
"removeDuplicates": false,
"reverse": false,
"seed": 1
}
· Response
· response.json
{
"result": "apple\nbanana\nCherry\nitem2\nitem10",
"mode": "natural",
"lines": 5,
"removedDuplicates": 0
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/sort-lines \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"banana\napple\nCherry\nitem10\nitem2","mode":"natural","caseInsensitive":true,"removeDuplicates":false,"reverse":false,"seed":1}'
POST/api/v1/tools/remove-duplicate-lines
Remove Duplicate Lines
Remove repeated lines from a text while keeping the original order. Returns the cleaned text with how many lines were removed.
Try the browser version of this tool
· Request body
· request.json
{
"text": "apple\nbanana\napple\n banana\ncherry",
"caseInsensitive": false,
"trim": true,
"keepFirst": true
}
· Response
· response.json
{
"result": "apple\nbanana\ncherry",
"total": 5,
"kept": 3,
"removed": 2
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/remove-duplicate-lines \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"apple\nbanana\napple\n banana\ncherry","caseInsensitive":false,"trim":true,"keepFirst":true}'
POST/api/v1/tools/reverse-text
Reverse Text
Reverse a text by characters, by word order per line, or by the characters of each line. Returns the reversed string.
Try the browser version of this tool
· Request body
· request.json
{
"text": "one two three",
"mode": "words"
}
· Response
· response.json
{
"result": "three two one",
"mode": "words"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/reverse-text \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"one two three","mode":"words"}'
POST/api/v1/tools/find-and-replace
Find and Replace
Replace every occurrence of a string or regular expression in a text. Supports case sensitivity, whole word matching and regex groups in the replacement. Returns the new text and the number of replacements.
Try the browser version of this tool
· Request body
· request.json
{
"text": "The cat sat on the mat with another cat.",
"find": "cat",
"replace": "dog",
"caseSensitive": false,
"wholeWord": true,
"useRegex": false
}
· Response
· response.json
{
"result": "The dog sat on the mat with another dog.",
"count": 2
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/find-and-replace \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"The cat sat on the mat with another cat.","find":"cat","replace":"dog","caseSensitive":false,"wholeWord":true,"useRegex":false}'
POST/api/v1/tools/word-frequency-counter
Word Frequency Counter
Count how often each word occurs in a text and return a ranked table, most frequent first, with counts and percentages. Can ignore case, skip short words and drop common stop words.
Try the browser version of this tool
· Request body
· request.json
{
"text": "the cat and the dog and the bird",
"ignoreCase": true,
"minLength": 1,
"excludeStopWords": false,
"limit": 3
}
· Response
· response.json
{
"words": [
{
"rank": 1,
"word": "the",
"count": 3,
"percent": 37.5
},
{
"rank": 2,
"word": "and",
"count": 2,
"percent": 25
},
{
"rank": 3,
"word": "bird",
"count": 1,
"percent": 12.5
}
],
"totalWords": 8,
"uniqueWords": 5
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/word-frequency-counter \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"the cat and the dog and the bird","ignoreCase":true,"minLength":1,"excludeStopWords":false,"limit":3}'
POST/api/v1/tools/reading-time-calculator
Reading Time Calculator
Estimate how long a text takes to read and to speak aloud, from the text itself or a word count, at a chosen words-per-minute plus slow, average and fast presets.
Try the browser version of this tool
· Request body
· request.json
{
"text": "Knowing how long your content takes to read helps you plan articles, documentation and talks. This short paragraph is here as a sample.",
"readingWpm": 238,
"speakingWpm": 150
}
· Response
· response.json
{
"wordCount": 23,
"characters": 135,
"sentences": 2,
"reading": {
"label": "Custom",
"wpm": 238,
"minutes": 0.1,
"time": "< 1 min"
},
"speaking": {
"label": "Custom",
"wpm": 150,
"minutes": 0.15,
"time": "< 1 min"
},
"readingPresets": [
{
"label": "Slow Reader",
"wpm": 150,
"minutes": 0.15,
"time": "< 1 min"
}
],
"speakingPresets": [
{
"label": "Slow Speech",
"wpm": 100,
"minutes": 0.23,
"time": "< 1 min"
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/reading-time-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"Knowing how long your content takes to read helps you plan articles, documentation and talks. This short paragraph is here as a sample.","readingWpm":238,"speakingWpm":150}'
POST/api/v1/tools/rot13
ROT13 Cipher
Apply ROT13, or any Caesar shift from 1 to 25, to a text. Letters rotate and keep their case; digits and punctuation stay as they are. Decoding with shift 13 gives the original back.
Try the browser version of this tool
· Request body
· request.json
{
"text": "Hello, World!",
"shift": 13,
"decode": false
}
· Response
· response.json
{
"result": "Uryyb, Jbeyq!",
"shift": 13,
"decode": false
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/rot13 \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"Hello, World!","shift":13,"decode":false}'
POST/api/v1/tools/morse-code-translator
Morse Code Translator
Translate text to International Morse code or Morse back to text. Letters are separated by a space and words by a slash; characters without a Morse code are dropped.
Try the browser version of this tool
· Request body
· request.json
{
"text": "SOS help",
"mode": "encode"
}
· Response
· response.json
{
"result": "... --- ... / .... . .-.. .--.",
"mode": "encode"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/morse-code-translator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"SOS help","mode":"encode"}'
POST/api/v1/tools/numbers-to-words
Numbers to Words
Write a number out in English words, up to 999 quadrillion, with decimals read digit by digit or as a currency amount in dollars, euros or pounds. Optional British style with "and".
Try the browser version of this tool
· Request body
· request.json
{
"number": "1234.56",
"mode": "plain",
"currency": "dollars",
"british": false
}
· Response
· response.json
{
"words": "One thousand two hundred thirty-four point five six",
"number": "1234.56"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/numbers-to-words \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"number":"1234.56","mode":"plain","currency":"dollars","british":false}'
POST/api/v1/tools/roman-numeral-converter
Roman Numeral Converter
Convert a whole number from 1 to 3999 into a Roman numeral, or a Roman numeral back into a number, with strict validation and a symbol-by-symbol breakdown. Detects the direction from the input unless a mode is given.
Try the browser version of this tool
· Request body
· request.json
{
"value": "1994",
"mode": "auto"
}
· Response
· response.json
{
"direction": "toRoman",
"roman": "MCMXCIV",
"number": 1994,
"parts": [
{
"value": 1000,
"symbol": "M"
}
],
"breakdown": "M (1000) + CM (900) + XC (90) + IV (4)"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/roman-numeral-converter \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"value":"1994","mode":"auto"}'
POST/api/v1/tools/text-cleaner
Text Cleaner
Clean up messy text: collapse extra spaces, trim lines, drop empty lines, strip HTML tags, remove punctuation, digits, emojis or control characters, and straighten smart quotes. Returns the cleaned text and how many characters each step removed.
Try the browser version of this tool
· Request body
· request.json
{
"text": "<p>Hello world</p>\n\n\n “quoted” text ",
"extraSpaces": true,
"trimLines": true,
"emptyLines": true,
"lineBreaks": false,
"htmlTags": true,
"punctuation": false,
"numbers": false,
"emojis": false,
"plainQuotes": true,
"controlChars": false
}
· Response
· response.json
{
"result": "Hello world\n\"quoted\" text",
"charactersBefore": 41,
"charactersAfter": 25,
"charactersRemoved": 16,
"steps": [
{
"option": "htmlTags",
"charactersRemoved": 7
}
],
"changed": [
"htmlTags",
"plainQuotes",
"trimLines",
"emptyLines",
"extraSpaces"
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/text-cleaner \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"<p>Hello world</p>\n\n\n “quoted” text ","extraSpaces":true,"trimLines":true,"emptyLines":true,"lineBreaks":false,"htmlTags":true,"punctuation":false,"numbers":false,"emojis":false,"plainQuotes":true,"controlChars":false}'
POST/api/v1/tools/json-to-csv
JSON to CSV
Turn a JSON array of objects, or a JSON string holding one, into CSV text. Nested objects become dotted column names such as address.city, arrays are written as JSON inside the cell, and every key seen in any row becomes a column.
Try the browser version of this tool
· Request body
· request.json
{
"json": "[{\"name\":\"Alice\",\"address\":{\"city\":\"Utrecht\"}},{\"name\":\"Bob\",\"address\":{\"city\":\"Leiden\"}}]",
"delimiter": ",",
"includeHeader": true,
"flatten": true
}
· Response
· response.json
{
"csv": "name,address.city\nAlice,Utrecht\nBob,Leiden",
"columns": [
"name",
"address.city"
],
"rowCount": 2
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/json-to-csv \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"json":"[{\"name\":\"Alice\",\"address\":{\"city\":\"Utrecht\"}},{\"name\":\"Bob\",\"address\":{\"city\":\"Leiden\"}}]","delimiter":",","includeHeader":true,"flatten":true}'
POST/api/v1/tools/json-to-yaml
JSON to YAML
Convert a JSON string to YAML text. Strings are quoted only when a YAML reader would otherwise see a number, boolean, date or empty value, multi-line strings become block scalars, and keys can be sorted.
Try the browser version of this tool
· Request body
· request.json
{
"json": "{\"name\":\"ToolForte\",\"tags\":[\"fast\",\"free\"],\"owner\":null}",
"indent": 2,
"sortKeys": false,
"nullStyle": "null"
}
· Response
· response.json
{
"yaml": "name: ToolForte\ntags:\n - fast\n - free\nowner: null"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/json-to-yaml \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"json":"{\"name\":\"ToolForte\",\"tags\":[\"fast\",\"free\"],\"owner\":null}","indent":2,"sortKeys":false,"nullStyle":"null"}'
POST/api/v1/tools/yaml-to-json
YAML to JSON
Parse YAML text and return both the value and its JSON text. Reads maps, lists, inline [lists] and {maps}, quoted and block scalars and comments. Anchors, aliases, merge keys, tags and multi-document files are not supported and are reported with the line number.
Try the browser version of this tool
· Request body
· request.json
{
"yaml": "name: ToolForte\ntags:\n - fast\n - free\nport: 8080",
"indent": 2
}
· Response
· response.json
{
"value": {
"name": "ToolForte",
"tags": [
"fast",
"free"
],
"port": 8080
},
"json": "{\n \"name\": \"ToolForte\",\n \"tags\": [\n \"fast\",\n \"free\"\n ],\n \"port\": 8080\n}"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/yaml-to-json \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"yaml":"name: ToolForte\ntags:\n - fast\n - free\nport: 8080","indent":2}'
POST/api/v1/tools/xml-to-json
XML to JSON
Parse XML into a JSON object keyed by the root element. Attributes become keys with a prefix ("@id"), text beside attributes or children lands under "#text", repeated elements become arrays, and namespace prefixes can be dropped. Malformed XML is reported with the line number; DTD-declared entities are not expanded.
Try the browser version of this tool
· Request body
· request.json
{
"xml": "<order id=\"42\"><item sku=\"A1\">Bolts</item><item sku=\"B2\">Nuts</item></order>",
"attributePrefix": "@",
"dropNamespaces": true,
"indent": 2
}
· Response
· response.json
{
"value": {
"order": {
"@id": "42",
"item": [
{
"@sku": "A1",
"#text": "Bolts"
},
{
"@sku": "B2",
"#text": "Nuts"
}
]
}
},
"json": "{\n \"order\": {\n \"@id\": \"42\",\n \"item\": [\n {\n \"@sku\": \"A1\",\n \"#text\": \"Bolts\"\n },\n {\n \"@sku\": \"B2\",\n \"#text\": \"Nuts\"\n }\n ]\n }\n}",
"elements": 3
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/xml-to-json \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"xml":"<order id=\"42\"><item sku=\"A1\">Bolts</item><item sku=\"B2\">Nuts</item></order>","attributePrefix":"@","dropNamespaces":true,"indent":2}'
POST/api/v1/tools/json-to-xml
JSON to XML
Serialise a JSON string as XML. Object keys become element names, array items repeat the parent key, null and empty objects become self-closing tags, and the root element name is yours to choose. A top-level array is wrapped in the root with one item element per entry.
Try the browser version of this tool
· Request body
· request.json
{
"json": "{\"name\":\"ToolForte\",\"tags\":[\"fast\",\"free\"]}",
"rootName": "product",
"declaration": true
}
· Response
· response.json
{
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<product>\n <name>ToolForte</name>\n <tags>fast</tags>\n <tags>free</tags>\n</product>"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/json-to-xml \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"json":"{\"name\":\"ToolForte\",\"tags\":[\"fast\",\"free\"]}","rootName":"product","declaration":true}'
POST/api/v1/tools/csv-to-markdown
CSV to Markdown
Turn CSV text into a GitHub-style Markdown table. Detects the delimiter (comma, semicolon, tab or pipe) unless told, reads quoted fields with embedded delimiters and newlines, and can align columns and pad cells so the table lines up in plain text.
Try the browser version of this tool
· Request body
· request.json
{
"csv": "name,age\nAlice,30\nBob,25",
"delimiter": "auto",
"firstRowHeader": true,
"padded": true,
"alignment": "left"
}
· Response
· response.json
{
"markdown": "| name | age |\n| :---- | :-- |\n| Alice | 30 |\n| Bob | 25 |",
"rows": 2,
"columns": 2,
"delimiter": ",",
"raggedLines": []
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/csv-to-markdown \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"csv":"name,age\nAlice,30\nBob,25","delimiter":"auto","firstRowHeader":true,"padded":true,"alignment":"left"}'
POST/api/v1/tools/html-entity-encoder
HTML Entity Encoder
Encode text as HTML entities or decode entities back to text. Encoding always covers &, <, >, quotes and common typographic characters, and can cover every non-ASCII character too, named where HTML has a name (é) and numeric otherwise. Decoding reads numeric references and HTML 4 named entities; unknown names are left as they are.
Try the browser version of this tool
· Request body
· request.json
{
"text": "<a href=\"x\">Tom & Jerry</a>",
"mode": "encode",
"encodeNonAscii": false
}
· Response
· response.json
{
"output": "<a href="x">Tom & Jerry</a>",
"mode": "encode"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/html-entity-encoder \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"<a href=\"x\">Tom & Jerry</a>","mode":"encode","encodeNonAscii":false}'
POST/api/v1/tools/json-to-typescript
JSON to TypeScript
Derive TypeScript interfaces from a JSON sample. Nested objects become their own interfaces named after their key, arrays become typed arrays (a union when the items differ), null stays null, and properties can be made optional or readonly.
Try the browser version of this tool
· Request body
· request.json
{
"json": "{\"id\":1,\"name\":\"Ada\",\"address\":{\"city\":\"Utrecht\"},\"tags\":[\"a\",\"b\"]}",
"rootName": "User",
"exportInterfaces": true,
"optionalProps": false,
"readonlyProps": false
}
· Response
· response.json
{
"typescript": "export interface Address {\n city: string;\n}\n\nexport interface User {\n id: number;\n name: string;\n address: Address;\n tags: string[];\n}",
"declarations": 2
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/json-to-typescript \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"json":"{\"id\":1,\"name\":\"Ada\",\"address\":{\"city\":\"Utrecht\"},\"tags\":[\"a\",\"b\"]}","rootName":"User","exportInterfaces":true,"optionalProps":false,"readonlyProps":false}'
POST/api/v1/tools/hash-generator
Hash Generator
Hash a text with SHA-1, SHA-256, SHA-384 or SHA-512 and return the hex digest, or all four at once. Text is hashed as UTF-8. No MD5: it is broken and Web Crypto does not offer it.
Try the browser version of this tool
· Request body
· request.json
{
"text": "hello world",
"algorithm": "SHA-256"
}
· Response
· response.json
{
"algorithms": [
"SHA-256"
],
"hashes": {
"SHA-256": "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
},
"byteLength": 11
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/hash-generator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"hello world","algorithm":"SHA-256"}'
POST/api/v1/tools/jwt-decoder
JWT Decoder
Decode a JSON Web Token into its header and payload, and explain the exp, iat and nbf claims as ISO dates with an expired flag. The signature is returned but never verified.
Try the browser version of this tool
· Request body
· request.json
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"now": "2026-09-07T12:00:00Z"
}
· Response
· response.json
{
"header": {
"alg": "HS256",
"typ": "JWT"
},
"payload": {
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
},
"signature": "SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"expiresAt": null,
"issuedAt": {
"unix": 1516239022,
"iso": "2018-01-18T01:30:22.000Z"
},
"notBefore": null,
"expired": null,
"checkedAt": "2026-09-07T12:00:00.000Z",
"verified": false
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/jwt-decoder \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c","now":"2026-09-07T12:00:00Z"}'
POST/api/v1/tools/timestamp-converter
Timestamp Converter
Convert a Unix timestamp (seconds or milliseconds) to an ISO 8601 UTC date, or an ISO date to a Unix timestamp. Returns both timestamps, the ISO and RFC 7231 forms, and the weekday.
Try the browser version of this tool
· Request body
· request.json
{
"value": 1725710400,
"unit": "auto"
}
· Response
· response.json
{
"input": 1725710400,
"interpretedAs": "seconds",
"unixSeconds": 1725710400,
"unixMilliseconds": 1725710400000,
"iso": "2024-09-07T12:00:00.000Z",
"utc": "Sat, 07 Sep 2024 12:00:00 GMT",
"date": "2024-09-07",
"time": "12:00:00",
"weekday": "Saturday"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/timestamp-converter \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"value":1725710400,"unit":"auto"}'
POST/api/v1/tools/number-base-converter
Number Base Converter
Convert a whole number from one base to another, any base 2 to 36, and also return its binary, octal, decimal and hexadecimal forms. Exact for numbers of any size, no rounding.
Try the browser version of this tool
· Request body
· request.json
{
"value": "255",
"fromBase": 10,
"toBase": 2
}
· Response
· response.json
{
"input": "255",
"fromBase": 10,
"toBase": 2,
"output": "11111111",
"negative": false,
"binary": "11111111",
"octal": "377",
"decimal": "255",
"hexadecimal": "FF"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/number-base-converter \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"value":"255","fromBase":10,"toBase":2}'
POST/api/v1/tools/password-generator
Password Generator
Generate one or more random passwords of a chosen length from lower case, upper case, digits and symbols, optionally without look-alike characters. Returns the passwords with their entropy in bits and a rough crack time.
Try the browser version of this tool
· Request body
· request.json
{
"length": 16,
"uppercase": true,
"lowercase": true,
"numbers": true,
"symbols": true,
"excludeAmbiguous": false,
"count": 1
}
· Response
· response.json
{
"passwords": [
"k7#Qm2$vLp9!Xw4Z"
],
"length": 16,
"charsetSize": 88,
"entropyBits": 103,
"strength": "Very strong",
"crackTime": "32B+ years"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/password-generator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"length":16,"uppercase":true,"lowercase":true,"numbers":true,"symbols":true,"excludeAmbiguous":false,"count":1}'
POST/api/v1/tools/random-number-generator
Random Number Generator
Draw random whole numbers between a minimum and maximum, inclusive, using cryptographic randomness. Ask for several at once, with or without repeats, for dice, lottery draws or samples.
Try the browser version of this tool
· Request body
· request.json
{
"min": 1,
"max": 6,
"count": 3,
"allowDuplicates": true
}
· Response
· response.json
{
"numbers": [
4,
1,
6
],
"min": 1,
"max": 6,
"count": 3,
"unique": true
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/random-number-generator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"min":1,"max":6,"count":3,"allowDuplicates":true}'
POST/api/v1/tools/chmod-calculator
Chmod Calculator
Convert Unix file permissions between octal (755) and symbolic (rwxr-xr-x) form. Returns both, a read/write/execute breakdown for owner, group and others, and the chmod command to apply them.
Try the browser version of this tool
· Request body
· request.json
{
"permissions": "755"
}
· Response
· response.json
{
"input": "755",
"octal": "755",
"symbolic": "rwxr-xr-x",
"owner": {
"read": true,
"write": true,
"execute": true,
"octal": 7,
"symbolic": "rwx"
},
"group": {
"read": true,
"write": false,
"execute": true,
"octal": 5,
"symbolic": "r-x"
},
"others": {
"read": true,
"write": false,
"execute": true,
"octal": 5,
"symbolic": "r-x"
},
"command": "chmod 755 <file>"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/chmod-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"permissions":"755"}'
POST/api/v1/tools/http-status-codes
HTTP Status Codes
Look up what an HTTP status code means. Give a code (404), a class (4xx) or a word (timeout) and get the name, class, one-line meaning, typical use case and RFC reference for every match.
Try the browser version of this tool
· Request body
· request.json
{
"query": "404"
}
· Response
· response.json
{
"query": "404",
"found": true,
"count": 1,
"matches": [
{
"code": 404,
"name": "Not Found",
"class": "4xx",
"className": "Client Error",
"description": "The server cannot find the requested resource. The URL is not recognized.",
"useCase": "Deleted pages, typos in URLs, resources that never existed. Most common HTTP error.",
"rfc": "RFC 9110"
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/http-status-codes \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"query":"404"}'
POST/api/v1/tools/px-rem-converter
PX to REM Converter
Convert a pixel value to rem or a rem value to pixels for a given root font size, 16px unless told otherwise. Returns both numbers and CSS-ready strings.
Try the browser version of this tool
· Request body
· request.json
{
"value": 24,
"direction": "px-to-rem",
"rootFontSize": 16
}
· Response
· response.json
{
"input": 24,
"direction": "px-to-rem",
"rootFontSize": 16,
"px": 24,
"rem": 1.5,
"pxText": "24px",
"remText": "1.5rem"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/px-rem-converter \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"value":24,"direction":"px-to-rem","rootFontSize":16}'
POST/api/v1/tools/utm-builder
UTM Builder
Add utm_source, utm_medium, utm_campaign, utm_term and utm_content to a URL, keeping any query parameters it already has. Returns the tagged link plus warnings about upper case or missing required tags.
Try the browser version of this tool
· Request body
· request.json
{
"url": "https://example.com/pricing?ref=1",
"source": "newsletter",
"medium": "email",
"campaign": "spring_sale",
"term": "running_shoes",
"content": "header_banner"
}
· Response
· response.json
{
"url": "https://example.com/pricing?ref=1&utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale&utm_term=running_shoes&utm_content=header_banner",
"baseUrl": "https://example.com/pricing?ref=1",
"params": {
"utm_source": "newsletter",
"utm_medium": "email",
"utm_campaign": "spring_sale",
"utm_term": "running_shoes",
"utm_content": "header_banner"
},
"warnings": []
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/utm-builder \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"url":"https://example.com/pricing?ref=1","source":"newsletter","medium":"email","campaign":"spring_sale","term":"running_shoes","content":"header_banner"}'
POST/api/v1/tools/color-contrast-checker
Color Contrast Checker
Compute the WCAG 2 contrast ratio between a text colour and a background colour and say whether it passes AA and AAA for normal and large text. Accepts hex, rgb() or hsl(), and suggests a nearby colour when it fails.
Try the browser version of this tool
· Request body
· request.json
{
"foreground": "#1e293b",
"background": "#ffffff"
}
· Response
· response.json
{
"foreground": "#1e293b",
"background": "#ffffff",
"ratio": 14.63,
"ratioText": "14.63:1",
"aa": {
"normalText": true,
"largeText": true
},
"aaa": {
"normalText": true,
"largeText": true
},
"suggestions": []
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/color-contrast-checker \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"foreground":"#1e293b","background":"#ffffff"}'
POST/api/v1/tools/percentage-calculator
Percentage Calculator
Answer one percentage question from two numbers: what x% of y is, what percent x is of y, the percentage change from x to y, or x increased or decreased by y%. Returns the number and a sentence stating it.
Try the browser version of this tool
· Request body
· request.json
{
"mode": "percentOf",
"x": 15,
"y": 200
}
· Response
· response.json
{
"mode": "percentOf",
"x": 15,
"y": 200,
"result": 30,
"resultIsPercent": false,
"sentence": "15% of 200 is 30."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/percentage-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"mode":"percentOf","x":15,"y":200}'
POST/api/v1/tools/compound-interest-calculator
Compound Interest Calculator
Grow a starting amount at an annual rate for a number of years, compounding monthly, quarterly or annually, with an optional monthly contribution. Returns the future value, total contributed, total interest and a year-by-year table.
Try the browser version of this tool
· Request body
· request.json
{
"principal": 10000,
"annualRatePercent": 7,
"years": 10,
"compoundsPerYear": 12,
"monthlyContribution": 100
}
· Response
· response.json
{
"principal": 10000,
"annualRatePercent": 7,
"years": 10,
"compoundsPerYear": 12,
"monthlyContribution": 100,
"futureValue": 37506.06,
"totalContributed": 22000,
"totalInterest": 15506.06,
"interestPercent": 41.34,
"yearly": [
{
"year": 1,
"contributions": 11200,
"interest": 769.39,
"balance": 11969.39
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/compound-interest-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"principal":10000,"annualRatePercent":7,"years":10,"compoundsPerYear":12,"monthlyContribution":100}'
POST/api/v1/tools/loan-calculator
Loan Calculator
Work out an annuity loan from the amount, annual interest rate and term: the fixed monthly payment, total paid, total interest and an amortisation schedule of up to 360 months showing principal, interest and remaining balance.
Try the browser version of this tool
· Request body
· request.json
{
"amount": 250000,
"annualRatePercent": 4.5,
"term": 30,
"termUnit": "years"
}
· Response
· response.json
{
"amount": 250000,
"annualRatePercent": 4.5,
"termMonths": 360,
"monthlyPayment": 1266.71,
"totalPaid": 456016.78,
"totalInterest": 206016.78,
"interestToPrincipalRatio": 0.82,
"schedule": [
{
"month": 1,
"payment": 1266.71,
"principal": 329.21,
"interest": 937.5,
"balance": 249670.79
}
],
"scheduleTruncated": false
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/loan-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"amount":250000,"annualRatePercent":4.5,"term":30,"termUnit":"years"}'
POST/api/v1/tools/bmi-calculator
BMI Calculator
Body mass index from height and weight, in centimetres and kilograms or in inches and pounds. Returns the BMI, its category (underweight, normal weight, overweight, obese) and the weight range that would count as normal at that height.
Try the browser version of this tool
· Request body
· request.json
{
"height": 175,
"weight": 70,
"units": "metric"
}
· Response
· response.json
{
"units": "metric",
"heightCm": 175,
"weightKg": 70,
"bmi": 22.9,
"category": "Normal weight",
"healthyWeightRange": {
"min": 56.7,
"max": 76.3,
"unit": "kg"
},
"categories": [
{
"label": "Underweight",
"range": "< 18.5"
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/bmi-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"height":175,"weight":70,"units":"metric"}'
POST/api/v1/tools/date-difference-calculator
Date Difference Calculator
The time between two calendar dates: total days, weeks plus days, a years/months/days breakdown, hours, and the number of business days (Monday to Friday, no holidays). Order does not matter; the end date is excluded unless includeEndDate is true.
Try the browser version of this tool
· Request body
· request.json
{
"startDate": "2026-01-01",
"endDate": "2026-12-31",
"includeEndDate": false
}
· Response
· response.json
{
"start": "2026-01-01",
"end": "2026-12-31",
"startWeekday": "Thursday",
"endWeekday": "Thursday",
"swapped": false,
"includeEndDate": false,
"years": 0,
"months": 11,
"days": 30,
"totalDays": 364,
"totalWeeks": 52,
"weeksAndDays": {
"weeks": 52,
"days": 0
},
"totalHours": 8736,
"businessDays": 260
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/date-difference-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"startDate":"2026-01-01","endDate":"2026-12-31","includeEndDate":false}'
POST/api/v1/tools/age-calculator
Age Calculator
Exact age on a date from a birth date: years, months and days, total days, weeks and months lived, and the date of the next birthday with the days until it. Defaults to today when asOf is left out.
Try the browser version of this tool
· Request body
· request.json
{
"birthDate": "1990-05-15",
"asOf": "2026-09-07"
}
· Response
· response.json
{
"birthDate": "1990-05-15",
"asOf": "2026-09-07",
"years": 36,
"months": 3,
"days": 23,
"totalDays": 13264,
"totalWeeks": 1894,
"totalMonths": 435,
"nextBirthday": {
"date": "2027-05-15",
"daysUntil": 250,
"turning": 37
}
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/age-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"birthDate":"1990-05-15","asOf":"2026-09-07"}'
POST/api/v1/tools/week-number
Week Number
The ISO 8601 week number and ISO year for a date, with the Monday and Sunday of that week, plus the US (Sunday-based) and UK/EU week numbers. Defaults to today when no date is given.
Try the browser version of this tool
· Request body
· request.json
{
"date": "2026-09-07"
}
· Response
· response.json
{
"date": "2026-09-07",
"weekday": "Monday",
"isoWeek": 37,
"isoYear": 2026,
"weekStart": "2026-09-07",
"weekEnd": "2026-09-13",
"usWeek": 37,
"ukWeek": 37
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/week-number \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"date":"2026-09-07"}'
POST/api/v1/tools/unit-converter
Unit Converter
Convert a value between units of length (m, km, cm, mm, mi, yd, ft, in, nmi, um), weight (kg, g, mg, lb, oz, st, t, us_ton, imperial_ton, ug), temperature (c, f, k), speed (kmh, ms, mph, kn) or data (b, kb, mb, gb, tb, in 1024 steps). Units are matched by key, full name or common alias.
Try the browser version of this tool
· Request body
· request.json
{
"value": 10,
"from": "km",
"to": "mi",
"category": "length"
}
· Response
· response.json
{
"value": 10,
"from": {
"key": "km",
"name": "Kilometers (km)"
},
"to": {
"key": "mi",
"name": "Miles"
},
"category": "length",
"result": 6.213711922373339,
"formatted": "6.213712"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/unit-converter \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"value":10,"from":"km","to":"mi","category":"length"}'
POST/api/v1/tools/discount-calculator
Discount Calculator
Final price and saving after a discount given as a percentage or a fixed amount, with optional extra stacked discounts applied one after another and optional VAT added on the discounted price. Money is rounded to cents.
Try the browser version of this tool
· Request body
· request.json
{
"price": 80,
"discountPercent": 25,
"additionalDiscountPercents": [
10
],
"vatPercent": 21
}
· Response
· response.json
{
"originalPrice": 80,
"discountPercent": 32.5,
"saving": 26,
"finalPrice": 54,
"vatPercent": 21,
"vatAmount": 11.34,
"finalPriceWithVat": 65.34,
"steps": [
{
"step": 1,
"percent": 25,
"priceAfter": 60
},
{
"step": 2,
"percent": 10,
"priceAfter": 54
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/discount-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"price":80,"discountPercent":25,"additionalDiscountPercents":[10],"vatPercent":21}'
POST/api/v1/tools/tip-calculator
Tip Calculator
Tip on a restaurant bill at a percentage, the total, and the even split per person. Can round the total up to the next whole unit, in which case the tip absorbs the difference.
Try the browser version of this tool
· Request body
· request.json
{
"bill": 86.4,
"tipPercent": 15,
"people": 4,
"roundUp": false
}
· Response
· response.json
{
"bill": 86.4,
"tipPercent": 15,
"people": 4,
"roundUp": false,
"tip": 12.96,
"total": 99.36,
"perPerson": {
"total": 24.84,
"tip": 3.24
},
"effectiveTipPercent": 15
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/tip-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"bill":86.4,"tipPercent":15,"people":4,"roundUp":false}'
POST/api/v1/tools/timezone-converter
Timezone Converter
Take a local date and time in one IANA time zone (such as Europe/Amsterdam) and express it in another, using the built-in Intl zone rules including daylight saving. Returns both wall-clock times with their UTC offsets, the UTC instant and the hour difference.
Try the browser version of this tool
· Request body
· request.json
{
"dateTime": "2026-03-15T14:30",
"from": "Europe/Amsterdam",
"to": "America/New_York"
}
· Response
· response.json
{
"input": "2026-03-15T14:30",
"from": {
"zone": "Europe/Amsterdam",
"dateTime": "2026-03-15T14:30:00",
"offset": "+01:00",
"offsetMinutes": 60,
"weekday": "Sunday"
},
"to": {
"zone": "America/New_York",
"dateTime": "2026-03-15T09:30:00",
"offset": "-04:00",
"offsetMinutes": -240,
"weekday": "Sunday"
},
"utc": "2026-03-15T13:30:00Z",
"differenceHours": -5
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/timezone-converter \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"dateTime":"2026-03-15T14:30","from":"Europe/Amsterdam","to":"America/New_York"}'
POST/api/v1/tools/roi-calculator
ROI Calculator
Return on investment from the amount invested and the total amount that came back: the gain, the ROI in percent and, when a holding period in years is given, the annualised return. An estimate, not financial advice.
Try the browser version of this tool
· Request body
· request.json
{
"invested": 10000,
"returned": 14000,
"years": 3
}
· Response
· response.json
{
"invested": 10000,
"returned": 14000,
"gain": 4000,
"roiPercent": 40,
"years": 3,
"annualisedPercent": 11.87,
"note": "Estimates for information only, not financial advice."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/roi-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"invested":10000,"returned":14000,"years":3}'
POST/api/v1/tools/break-even-calculator
Break-even Calculator
Break-even point from fixed costs per period, the price per unit and the variable cost per unit: the units and revenue needed to cover costs, the contribution margin, profit at an optional sales volume, and scenarios at half to twice the break-even volume.
Try the browser version of this tool
· Request body
· request.json
{
"fixedCosts": 5000,
"variableCostPerUnit": 10,
"pricePerUnit": 25,
"volume": 500
}
· Response
· response.json
{
"fixedCosts": 5000,
"pricePerUnit": 25,
"variableCostPerUnit": 10,
"contributionMargin": 15,
"contributionMarginPercent": 60,
"breakEvenUnits": 333.33,
"breakEvenUnitsRoundedUp": 334,
"breakEvenRevenue": 8333.33,
"volume": 500,
"profitAtVolume": 2500,
"scenarios": [
{
"multiplier": 0.5,
"units": 167,
"revenue": 4175,
"profit": -2495
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/break-even-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"fixedCosts":5000,"variableCostPerUnit":10,"pricePerUnit":25,"volume":500}'
POST/api/v1/tools/aow-age-calculator
AOW Age Calculator
Look up the Dutch state pension (AOW) age for a birth date from the official SVB table: the age in years and months, the date it starts, how long until then, and whether that age is legally fixed or still an expectation.
Try the browser version of this tool
· Request body
· request.json
{
"birthDate": "1975-05-12",
"today": "2026-08-28"
}
· Response
· response.json
{
"status": "expected",
"years": 68,
"months": 0,
"aowDate": "2043-05-12",
"timeLeft": {
"years": 16,
"months": 8,
"days": 15
},
"note": "This is an expectation, not a guarantee."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/aow-age-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"birthDate":"1975-05-12","today":"2026-08-28"}'
POST/api/v1/tools/erfbelasting-calculator
Dutch Inheritance Tax Calculator
Estimate Dutch inheritance tax (erfbelasting) for one heir with the 2026 exemptions and two-bracket rates: give the inherited amount and the relationship to the deceased, get the exemption, taxable amount, tax per bracket, total tax and what the heir keeps.
Try the browser version of this tool
· Request body
· request.json
{
"amount": 100000,
"heir": "child"
}
· Response
· response.json
{
"ok": true,
"exemption": 26230,
"exemptionApplied": 26230,
"taxableAmount": 73770,
"lowBracketTax": 7377,
"highBracketTax": 0,
"totalTax": 7377,
"netReceived": 92623,
"effectiveRate": 0.07377,
"notes": [
"Partners usually count as one person for inheritance tax."
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/erfbelasting-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"amount":100000,"heir":"child"}'
POST/api/v1/tools/schenkbelasting-calculator
Dutch Gift Tax Calculator
Estimate Dutch gift tax (schenkbelasting) with the 2026 exemptions and two-bracket rates: give the gift amount, the relationship to the donor and which exemption applies, get the exemption used, taxable amount, tax per bracket, total tax and what the recipient keeps.
Try the browser version of this tool
· Request body
· request.json
{
"amount": 25000,
"relationship": "child",
"exemption": "annual"
}
· Response
· response.json
{
"ok": true,
"exemptionApplied": 6908,
"taxableAmount": 18092,
"lowBracketTax": 1809.2,
"highBracketTax": 0,
"totalTax": 1809.2,
"netReceived": 23190.8,
"effectiveRate": 0.072368,
"notes": [
"Partners count as one donor."
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/schenkbelasting-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"amount":25000,"relationship":"child","exemption":"annual"}'
POST/api/v1/tools/ww-duration-calculator
Dutch WW Duration Calculator
Estimate how many months of Dutch unemployment benefit (WW) an employment history gives: one month per year for the first ten years, half a month per year after that, between three and twenty-four months, with the notional years for people born in 1979 or earlier counted automatically.
Try the browser version of this tool
· Request body
· request.json
{
"birthYear": 1975,
"workedYearsSince1998": 20
}
· Response
· response.json
{
"ok": true,
"notionalYears": 5,
"actualYears": 20,
"totalYears": 25,
"months": 17.5,
"uncappedMonths": 17.5,
"cappedAtMaximum": false,
"raisedToMinimum": false,
"note": "This is an estimate."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/ww-duration-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"birthYear":1975,"workedYearsSince1998":20}'
POST/api/v1/tools/30-percent-ruling-calculator
30% Ruling Calculator
Work out the tax-free allowance under the Dutch 30% ruling for a gross annual salary with the 2026 salary norm and WNT cap, plus a simplified estimate of net pay with and without the ruling and the yearly advantage.
Try the browser version of this tool
· Request body
· request.json
{
"grossAnnualSalary": 70000,
"youngMaster": false
}
· Response
· response.json
{
"ok": true,
"grossAnnualSalary": 70000,
"salaryNorm": 48013,
"eligible": true,
"allowancePerYear": 21000,
"allowancePerMonth": 1750,
"taxableSalaryWithRuling": 49000,
"netPerYearWithoutRuling": 49000,
"netPerYearWithRuling": 58000,
"netAdvantagePerYear": 9000,
"cappedByWnt": false,
"limitedByNorm": false,
"notes": [
"Based on 2026 figures."
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/30-percent-ruling-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"grossAnnualSalary":70000,"youngMaster":false}'
POST/api/v1/tools/dutch-holiday-allowance-calculator
Dutch Holiday Allowance Calculator
Calculate Dutch holiday allowance (vakantiegeld) from a gross monthly salary and the months worked: the gross amount at the given percentage (statutory minimum 8%) and an estimate of the net payout after the special payroll tax rate (bijzonder tarief).
Try the browser version of this tool
· Request body
· request.json
{
"monthlySalary": 3500,
"monthsWorked": 12,
"allowancePercent": 8,
"specialRatePercent": 42.01
}
· Response
· response.json
{
"ok": true,
"grossAllowance": 3360,
"taxWithheld": 1411.54,
"netAllowance": 1948.46,
"allowancePercent": 8,
"specialRatePercent": 42.01,
"note": "Based on 2026 figures."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/dutch-holiday-allowance-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"monthlySalary":3500,"monthsWorked":12,"allowancePercent":8,"specialRatePercent":42.01}'
POST/api/v1/tools/dutch-notice-period-calculator
Dutch Notice Period Calculator
Find the statutory Dutch notice period (Article 7:672 Civil Code) for an employee or employer from the employment start date and the date notice is given, and the date the contract ends, since notice runs from the first of the next month. A contractual period can override the statutory one.
Try the browser version of this tool
· Request body
· request.json
{
"givenBy": "employee",
"startDate": "2019-03-01",
"noticeDate": "2026-09-12",
"contractMonths": 1
}
· Response
· response.json
{
"ok": true,
"serviceYears": 7.53,
"statutoryMonths": 1,
"appliedMonths": 1,
"fromContract": true,
"noticePeriodStarts": "2026-10-01",
"employmentEnds": "2026-10-31",
"note": "Based on Article 7:672 of the Dutch Civil Code."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/dutch-notice-period-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"givenBy":"employee","startDate":"2019-03-01","noticeDate":"2026-09-12","contractMonths":1}'
POST/api/v1/tools/dutch-severance-calculator
Dutch Severance Calculator
Calculate the Dutch statutory transition payment (transitievergoeding) with the 2026 rules: one third of the monthly salary base per year of service, pro rata by day, capped at EUR 102,000 or one annual salary if higher. The base can include 8% holiday allowance and fixed yearly bonuses.
Try the browser version of this tool
· Request body
· request.json
{
"monthlySalary": 3500,
"fixedAnnualBonuses": 0,
"includeHolidayAllowance": true,
"startDate": "2018-01-01",
"endDate": "2026-12-31"
}
· Response
· response.json
{
"ok": true,
"serviceDays": 3287,
"serviceYears": 9,
"monthlyBase": 3780,
"formulaAmount": 11339.14,
"statutoryMaximum": 102000,
"payment": 11339.14,
"capped": false,
"note": "Based on 2026 figures."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/dutch-severance-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"monthlySalary":3500,"fixedAnnualBonuses":0,"includeHolidayAllowance":true,"startDate":"2018-01-01","endDate":"2026-12-31"}'
POST/api/v1/tools/test-documentnummer-generator
Test Document Number Generator
Generate random Dutch test document numbers in the structural format of an ID card (4 letters + 5 digits), passport (2 letters + 7 digits) or driving licence (10 digits). Format only, no check digit, tied to no real document, for test environments.
Try the browser version of this tool
· Request body
· request.json
{
"type": "idkaart",
"count": 5
}
· Response
· response.json
{
"type": "idkaart",
"label": "ID Card (Identiteitskaart)",
"format": "4 letters + 5 digits (e.g. SPFC12345)",
"count": 5,
"numbers": [
"SPFC12345"
],
"note": "Test numbers only. They follow the structural format of Dutch documents but are random, belong to no real document and carry no check digit."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/test-documentnummer-generator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"type":"idkaart","count":5}'
POST/api/v1/tools/dutch-school-holidays
Dutch School Holidays
List the official Dutch school holidays (schoolvakanties) for a school year and region (noord, midden or zuid) with start and end dates, whether each is advisory, days until each one, and which break comes next. Covers 2026-2027 and 2027-2028 from Rijksoverheid.nl.
Try the browser version of this tool
· Request body
· request.json
{
"schoolYear": "2026-2027",
"region": "midden",
"today": "2026-09-07"
}
· Response
· response.json
{
"schoolYear": "2026-2027",
"region": "midden",
"holidays": [
{
"name": "Autumn break",
"dutch": "Herfstvakantie",
"start": "2026-10-17",
"end": "2026-10-25",
"advisory": true,
"daysUntilStart": 40,
"status": "upcoming"
}
],
"next": {
"name": "Autumn break",
"dutch": "Herfstvakantie",
"start": "2026-10-17",
"end": "2026-10-25",
"advisory": true,
"daysUntilStart": 40,
"ongoing": false
},
"note": "Kerstvakantie and zomervakantie are set by the Ministry of Education."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/dutch-school-holidays \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"schoolYear":"2026-2027","region":"midden","today":"2026-09-07"}'
POST/api/v1/tools/dutch-mileage-calculator
Dutch Mileage Allowance Calculator
Calculate a Dutch kilometre reimbursement per week, month and year from a distance per trip and trips per week (or a weekly total), working weeks and a rate, and show how much of it exceeds the 2026 tax-free maximum of EUR 0.25 per km.
Try the browser version of this tool
· Request body
· request.json
{
"kmPerTrip": 25,
"tripsPerWeek": 8,
"kmPerWeek": 200,
"weeksPerYear": 46,
"ratePerKm": 0.25
}
· Response
· response.json
{
"ok": true,
"weeklyKm": 200,
"yearlyKm": 9200,
"perWeek": 50,
"perMonth": 191.67,
"perYear": 2300,
"ratePerKm": 0.25,
"taxFreeRate": 0.25,
"aboveTaxFree": false,
"taxablePartPerYear": 0,
"note": "Based on 2026 figures."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/dutch-mileage-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"kmPerTrip":25,"tripsPerWeek":8,"kmPerWeek":200,"weeksPerYear":46,"ratePerKm":0.25}'
POST/api/v1/tools/subtitle-converter
Subtitle Converter
Convert subtitles between SRT and WebVTT or to a plain transcript, shift or stretch the timing, append a second part, and repair order, overlaps, empty and flashing cues. Returns the rewritten subtitle text and a report of what changed.
Try the browser version of this tool
· Request body
· request.json
{
"text": "1\n00:00:01,000 --> 00:00:03,500\nHello there.",
"format": "vtt",
"shiftSeconds": -2.5,
"scalePercent": 104.271,
"repair": true,
"appendText": "1\n00:00:00,500 --> 00:00:02,000\nPart two begins.",
"appendOffsetSeconds": 5400
}
· Response
· response.json
{
"result": "WEBVTT\n\n00:00:01.000 --> 00:00:03.500\nHello there.\n",
"format": "vtt",
"inputFormat": "srt",
"cues": 1,
"durationMs": 3500,
"notes": [],
"repairs": {
"reordered": false,
"emptyRemoved": 0,
"overlapsFixed": 0,
"negativeClamped": 0,
"tooShortExtended": 0
}
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/subtitle-converter \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"1\n00:00:01,000 --> 00:00:03,500\nHello there.","format":"vtt","shiftSeconds":-2.5,"scalePercent":104.271,"repair":true,"appendText":"1\n00:00:00,500 --> 00:00:02,000\nPart two begins.","appendOffsetSeconds":5400}'
POST/api/v1/tools/csv-merge
CSV Merge
Append several CSV files into one. By header, columns are matched by name (case-insensitive) and the headers are unioned, so files with different column orders or an extra column combine cleanly; by position, rows are appended under the first file's header. Optionally adds a Source column with each file's name. Returns the merged CSV.
Try the browser version of this tool
· Request body
· request.json
{
"files": [
{
"name": "jan.csv",
"text": "id,amount\n1,10\n"
},
{
"name": "feb.csv",
"text": "amount,id\n20,2\n"
}
],
"mode": "byHeader",
"sourceColumn": true,
"delimiter": ";"
}
· Response
· response.json
{
"result": "id,amount,Source\n1,10,jan.csv\n2,20,feb.csv\n",
"header": [
"id",
"amount",
"Source"
],
"rows": 2,
"files": 2
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/csv-merge \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"files":[{"name":"jan.csv","text":"id,amount\n1,10\n"},{"name":"feb.csv","text":"amount,id\n20,2\n"}],"mode":"byHeader","sourceColumn":true,"delimiter":";"}'
POST/api/v1/tools/csv-split
CSV Split
Split one CSV into parts, either every N rows or one part per distinct value of a column. Every part keeps the header. Returns the parts as CSV text with a name each.
Try the browser version of this tool
· Request body
· request.json
{
"text": "id,country\n1,NL\n2,BE\n3,NL\n",
"by": "column",
"size": 1000,
"column": "country",
"name": "orders"
}
· Response
· response.json
{
"parts": [
{
"name": "orders-NL",
"rows": 2,
"csv": "id,country\n1,NL\n3,NL\n"
},
{
"name": "orders-BE",
"rows": 1,
"csv": "id,country\n2,BE\n"
}
],
"count": 2,
"totalRows": 3
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/csv-split \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"id,country\n1,NL\n2,BE\n3,NL\n","by":"column","size":1000,"column":"country","name":"orders"}'
POST/api/v1/tools/mortgage-calculator
Mortgage Calculator
Work out the payment on a home loan from the price, the deposit, the rate and the term, paid monthly, bi-weekly or weekly. Returns the payment per period, the total paid, the total interest, the loan-to-value ratio and an amortisation schedule of up to 360 periods showing how each payment splits between principal and interest.
Try the browser version of this tool
· Request body
· request.json
{
"homePrice": 350000,
"downPayment": 70000,
"annualRatePercent": 4.5,
"termYears": 30,
"paymentFrequency": "monthly"
}
· Response
· response.json
{
"homePrice": 350000,
"downPayment": 70000,
"loanAmount": 280000,
"annualRatePercent": 4.5,
"termYears": 30,
"frequency": "monthly",
"periodsPerYear": 12,
"totalPeriods": 360,
"periodicPayment": 1418.72,
"totalPayment": 510738.79,
"totalInterest": 230738.79,
"loanToValuePercent": 80,
"schedule": [
{
"period": 1,
"payment": 1418.72,
"principal": 368.72,
"interest": 1050,
"balance": 279631.28
}
],
"scheduleTruncated": false
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/mortgage-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"homePrice":350000,"downPayment":70000,"annualRatePercent":4.5,"termYears":30,"paymentFrequency":"monthly"}'
POST/api/v1/tools/simple-interest-calculator
Simple Interest Calculator
Interest at a flat rate on the original principal only, I = P x r x t, over a period given in years or months. Returns the interest, the final amount, and what the same money would have made with annual compounding, so the two methods can be compared before signing anything.
Try the browser version of this tool
· Request body
· request.json
{
"principal": 10000,
"annualRatePercent": 5,
"time": 3,
"timeUnit": "years"
}
· Response
· response.json
{
"principal": 10000,
"annualRatePercent": 5,
"time": 3,
"timeUnit": "years",
"timeYears": 3,
"interest": 1500,
"totalAmount": 11500,
"compoundTotalAmount": 11576.25,
"compoundInterest": 1576.25,
"compoundAdvantage": 76.25
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/simple-interest-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"principal":10000,"annualRatePercent":5,"time":3,"timeUnit":"years"}'
POST/api/v1/tools/investment-calculator
Investment Calculator
Project a lump sum plus a monthly contribution at a yearly return, compounded monthly with the contribution going in at the start of each month. Returns the final value, everything paid in, the growth, and a year-by-year table of balance and growth.
Try the browser version of this tool
· Request body
· request.json
{
"initialInvestment": 10000,
"monthlyContribution": 500,
"annualReturnPercent": 7,
"years": 20
}
· Response
· response.json
{
"initialInvestment": 10000,
"monthlyContribution": 500,
"annualReturnPercent": 7,
"years": 20,
"finalValue": 302370.09,
"totalContributed": 130000,
"totalGrowth": 172370.09,
"growthPercent": 57,
"yearlyBreakdown": [
{
"year": 1,
"contributed": 16000,
"growth": 955.34,
"balance": 16955.34
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/investment-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"initialInvestment":10000,"monthlyContribution":500,"annualReturnPercent":7,"years":20}'
POST/api/v1/tools/sip-calculator
SIP Calculator
Returns on a systematic investment plan: the same amount invested every month for a number of years at an expected annual return, using the annuity due formula Indian SIP calculators publish. Returns the total value, the amount invested, the returns earned and a year-by-year table.
Try the browser version of this tool
· Request body
· request.json
{
"monthlyInvestment": 5000,
"expectedAnnualReturnPercent": 12,
"years": 10
}
· Response
· response.json
{
"monthlyInvestment": 5000,
"expectedAnnualReturnPercent": 12,
"years": 10,
"totalValue": 1161695.38,
"investedAmount": 600000,
"estimatedReturns": 561695.38,
"returnsPercent": 48.4,
"yearlyBreakdown": [
{
"year": 1,
"invested": 60000,
"returns": 4046.64,
"value": 64046.64
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/sip-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"monthlyInvestment":5000,"expectedAnnualReturnPercent":12,"years":10}'
POST/api/v1/tools/emi-calculator
EMI Calculator
The equated monthly instalment on a loan from the amount, the annual rate and a tenure in years or months. Returns the instalment, the total paid, the total interest, interest as a share of the total, and an amortisation schedule grouped by year.
Try the browser version of this tool
· Request body
· request.json
{
"loanAmount": 1000000,
"annualRatePercent": 8.5,
"tenure": 20,
"tenureUnit": "years"
}
· Response
· response.json
{
"loanAmount": 1000000,
"annualRatePercent": 8.5,
"tenure": 20,
"tenureUnit": "years",
"months": 240,
"emi": 8678.23,
"totalPayment": 2082775.76,
"totalInterest": 1082775.76,
"interestPercent": 52,
"yearlyBreakdown": [
{
"year": 1,
"principalPaid": 19902.29,
"interestPaid": 84236.5,
"balance": 980097.71
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/emi-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"loanAmount":1000000,"annualRatePercent":8.5,"tenure":20,"tenureUnit":"years"}'
POST/api/v1/tools/profit-margin-calculator
Profit Margin Calculator
Gross margin, markup and profit on one sale. In margin mode give the cost and the selling price; in price mode give the cost and the margin you want and it returns the price to charge. Margin is profit over the price, markup is profit over the cost, and both come back either way.
Try the browser version of this tool
· Request body
· request.json
{
"mode": "margin",
"cost": 60,
"revenue": 100,
"targetMarginPercent": 40
}
· Response
· response.json
{
"mode": "margin",
"cost": 60,
"revenue": 100,
"profit": 40,
"grossMarginPercent": 40,
"markupPercent": 66.67
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/profit-margin-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"mode":"margin","cost":60,"revenue":100,"targetMarginPercent":40}'
POST/api/v1/tools/margin-calculator
Margin and Markup Calculator
Give any two of cost, revenue and gross margin and this solves for the rest, including the markup. Use costRevenue when you know both amounts, costMargin to price up from a cost, and revenueMargin to work out what a product may cost to hit a margin at a fixed price.
Try the browser version of this tool
· Request body
· request.json
{
"mode": "costRevenue",
"cost": 60,
"revenue": 100,
"marginPercent": 40
}
· Response
· response.json
{
"mode": "costRevenue",
"cost": 60,
"revenue": 100,
"profit": 40,
"grossMarginPercent": 40,
"markupPercent": 66.67
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/margin-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"mode":"costRevenue","cost":60,"revenue":100,"marginPercent":40}'
POST/api/v1/tools/commission-calculator
Commission Calculator
Commission on a sale and what is left after it. Flat mode pays one rate on the whole amount; tiered mode works like tax brackets, each rate paid only on the slice of the sale inside its band, which is why the effective rate lands between the lowest and highest tier.
Try the browser version of this tool
· Request body
· request.json
{
"saleAmount": 50000,
"mode": "tiered",
"ratePercent": 5,
"tiers": [
{
"upTo": 10000,
"ratePercent": 3
},
{
"upTo": 30000,
"ratePercent": 5
},
{
"ratePercent": 8
}
]
}
· Response
· response.json
{
"mode": "tiered",
"saleAmount": 50000,
"commission": 2900,
"net": 47100,
"effectiveRatePercent": 5.8,
"breakdown": [
{
"label": "Up to 10,000",
"amount": 10000,
"ratePercent": 3,
"commission": 300
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/commission-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"saleAmount":50000,"mode":"tiered","ratePercent":5,"tiers":[{"upTo":10000,"ratePercent":3},{"upTo":30000,"ratePercent":5},{"ratePercent":8}]}'
POST/api/v1/tools/sales-tax-calculator
Sales Tax Calculator
Add sales tax to a net price, or pull it back out of a price that already includes it. Works for US sales tax and for VAT alike. Returns the net, the tax and the gross, rounded so that net plus tax is exactly the gross.
Try the browser version of this tool
· Request body
· request.json
{
"amount": 100,
"ratePercent": 8.875,
"mode": "add"
}
· Response
· response.json
{
"mode": "add",
"ratePercent": 8.875,
"net": 100,
"tax": 8.88,
"gross": 108.88
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/sales-tax-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"amount":100,"ratePercent":8.875,"mode":"add"}'
POST/api/v1/tools/gst-calculator
GST Calculator
Add GST to a base price or remove it from an inclusive one, at any rate including the Indian slabs of 5, 12, 18 and 28 percent. Returns the net, the GST and the gross, plus the CGST and SGST halves for an intra-state supply, split so the two halves add up to the tax exactly.
Try the browser version of this tool
· Request body
· request.json
{
"amount": 10000,
"ratePercent": 18,
"mode": "add"
}
· Response
· response.json
{
"mode": "add",
"ratePercent": 18,
"net": 10000,
"gst": 1800,
"gross": 11800,
"cgst": 900,
"sgst": 900
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/gst-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"amount":10000,"ratePercent":18,"mode":"add"}'
POST/api/v1/tools/inflation-calculator
Inflation Calculator
What an amount is worth after inflation, or what it was worth before. Fixed mode applies a rate you choose over a number of years. CPI mode uses the published US CPI-U annual averages from 1913 to 2025, so two years can be compared with the figures the BLS actually reported.
Try the browser version of this tool
· Request body
· request.json
{
"mode": "cpi",
"amount": 100,
"annualRatePercent": 3,
"years": 10,
"fromYear": 1990,
"toYear": 2025
}
· Response
· response.json
{
"mode": "cpi",
"amount": 100,
"years": 35,
"annualRatePercent": 2.61,
"futureCost": 246.37,
"purchasingPower": 40.59,
"cumulativeInflationPercent": 146.37,
"fromYear": 1990,
"toYear": 2025,
"fromIndex": 130.7,
"toIndex": 322
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/inflation-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"mode":"cpi","amount":100,"annualRatePercent":3,"years":10,"fromYear":1990,"toYear":2025}'
POST/api/v1/tools/retirement-calculator
Retirement Calculator
Project a pension pot from what is saved now, what goes in every month, the return and the years left until retirement. Returns the pot at the retirement age, the same pot restated in today's money at an inflation rate, what the 4% rule would pay per month, and a year-by-year table.
Try the browser version of this tool
· Request body
· request.json
{
"currentAge": 30,
"retirementAge": 67,
"currentSavings": 25000,
"monthlyContribution": 500,
"annualReturnPercent": 7,
"annualInflationPercent": 2.5
}
· Response
· response.json
{
"currentAge": 30,
"retirementAge": 67,
"yearsToRetire": 37,
"currentSavings": 25000,
"monthlyContribution": 500,
"annualReturnPercent": 7,
"annualInflationPercent": 2.5,
"nestEgg": 1385133.21,
"nestEggInTodaysMoney": 555531.29,
"totalContributed": 247000,
"totalGrowth": 1138133.21,
"monthlyIncome": 4617.11,
"monthlyIncomeInTodaysMoney": 1851.77,
"yearlyBreakdown": [
{
"age": 31,
"contributed": 31000,
"balance": 33039.69,
"todaysValue": 32233.84
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/retirement-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"currentAge":30,"retirementAge":67,"currentSavings":25000,"monthlyContribution":500,"annualReturnPercent":7,"annualInflationPercent":2.5}'
POST/api/v1/tools/debt-payoff-calculator
Debt Payoff Calculator
Take a list of debts with balance, APR and minimum payment, add whatever extra you can pay each month, and simulate both payoff strategies: snowball, which clears the smallest balance first, and avalanche, which clears the dearest first. Returns months to debt free, total interest and the payoff order for each, plus what avalanche saves.
Try the browser version of this tool
· Request body
· request.json
{
"debts": [
{
"name": "Credit card",
"balance": 3500,
"aprPercent": 21,
"minPayment": 90
},
{
"name": "Car loan",
"balance": 9000,
"aprPercent": 7.5,
"minPayment": 260
}
],
"extraMonthlyPayment": 200
}
· Response
· response.json
{
"totalBalance": 12500,
"totalMinimumPayment": 350,
"extraMonthlyPayment": 200,
"snowball": {
"strategy": "snowball",
"months": 28,
"totalInterest": 1407.79,
"payoffOrder": [
{
"name": "Credit card",
"month": 14
}
],
"paidOff": true
},
"avalanche": {
"strategy": "avalanche",
"months": 28,
"totalInterest": 1407.79,
"payoffOrder": [
{
"name": "Credit card",
"month": 14
}
],
"paidOff": true
},
"interestSavedByAvalanche": 0,
"monthsSavedByAvalanche": 0,
"underwater": []
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/debt-payoff-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"debts":[{"name":"Credit card","balance":3500,"aprPercent":21,"minPayment":90},{"name":"Car loan","balance":9000,"aprPercent":7.5,"minPayment":260}],"extraMonthlyPayment":200}'
POST/api/v1/tools/savings-goal-calculator
Savings Goal Calculator
A savings goal from either end. monthsToGoal walks the months at a given deposit until the balance clears the goal and reports the quarter marks along the way; requiredDeposit solves the other way round for the monthly amount a deadline needs. Both include interest compounded monthly.
Try the browser version of this tool
· Request body
· request.json
{
"mode": "monthsToGoal",
"goal": 10000,
"currentSavings": 1500,
"monthlyDeposit": 300,
"months": 24,
"annualRatePercent": 2.5
}
· Response
· response.json
{
"mode": "monthsToGoal",
"goal": 10000,
"currentSavings": 1500,
"annualRatePercent": 2.5,
"alreadyThere": false,
"months": 28,
"monthlyDeposit": 300,
"totalDeposited": 8400,
"interestEarned": 330.58,
"finalBalance": 10230.58,
"schedule": [
{
"month": 1,
"balance": 1803.13,
"note": ""
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/savings-goal-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"mode":"monthsToGoal","goal":10000,"currentSavings":1500,"monthlyDeposit":300,"months":24,"annualRatePercent":2.5}'
POST/api/v1/tools/split-bill-calculator
Split Bill Calculator
Settle up a group who have been paying for each other. Each expense is paid by one person and shared evenly by everyone or by the people named on it, with an optional tip added first. Returns what each person paid, owes and is owed, plus the shortest set of transfers that clears the group, optionally rounded to whole notes.
Try the browser version of this tool
· Request body
· request.json
{
"people": [
"Alex",
"Sam",
"Kim"
],
"expenses": [
{
"payer": "Alex",
"description": "Dinner",
"amount": 84
},
{
"payer": "Sam",
"description": "Taxi",
"amount": 21
}
],
"tipPercent": 10,
"roundTransfersTo": 5
}
· Response
· response.json
{
"people": [
"Alex",
"Sam",
"Kim"
],
"total": 105,
"tipPercent": 0,
"balances": [
{
"person": "Alex",
"paid": 84,
"owed": 35,
"balance": 49
}
],
"transfers": [
{
"from": "Kim",
"to": "Alex",
"amount": 35
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/split-bill-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"people":["Alex","Sam","Kim"],"expenses":[{"payer":"Alex","description":"Dinner","amount":84},{"payer":"Sam","description":"Taxi","amount":21}],"tipPercent":10,"roundTransfersTo":5}'
POST/api/v1/tools/freelance-rate-calculator
Freelance Rate Calculator
The hourly and day rate a Dutch freelancer has to charge to take home a target net income. Works backwards from the net through the 2026 box 1 brackets, the zelfstandigenaftrek, the mkb-winstvrijstelling, the tax credits and the Zvw contribution, adds business costs and a buffer, and divides by the hours left after holidays and non-billable time. Dutch ZZP rules only.
Try the browser version of this tool
· Request body
· request.json
{
"targetNetIncome": 45000,
"businessCosts": 5000,
"nonBillablePercent": 30,
"vacationWeeks": 5,
"hoursPerWeek": 40,
"bufferPercent": 10,
"monthlyDisabilityInsurance": 150,
"monthlyPensionDeposit": 250,
"hoursPerDay": 8
}
· Response
· response.json
{
"targetNetIncome": 45000,
"billableHours": 1316,
"hourlyRate": 52.75,
"dayRate": 422,
"hoursPerDay": 8,
"revenue": 63108.06,
"revenueWithBuffer": 69418.86,
"buffer": 6310.81,
"costs": 5000,
"profit": 58108.06,
"incomeTax": 10698.54,
"healthcareContribution": 2409.52,
"disabilityInsurance": 0,
"pensionDeposit": 0,
"equivalentEmployeeSalary": 61830.07
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/freelance-rate-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"targetNetIncome":45000,"businessCosts":5000,"nonBillablePercent":30,"vacationWeeks":5,"hoursPerWeek":40,"bufferPercent":10,"monthlyDisabilityInsurance":150,"monthlyPensionDeposit":250,"hoursPerDay":8}'
POST/api/v1/tools/macro-calculator
Macro Calculator
Daily protein, carbohydrate and fat grams for a calorie target and a goal. Calories come from the Mifflin-St Jeor basal rate times an activity factor, shifted by 500 kcal down to lose or 300 kcal up to gain and never below 1200, and are then split three ways: balanced 30/40/30, low carb 40/20/40 and high protein 40/30/30. This is an indication, not medical advice.
Try the browser version of this tool
· Request body
· request.json
{
"age": 30,
"sex": "male",
"heightCm": 178,
"weightKg": 75,
"activity": "moderate",
"goal": "maintain"
}
· Response
· response.json
{
"bmr": 1718,
"tdee": 2662,
"calories": 2662,
"goal": "maintain",
"activity": "moderate",
"activityFactor": 1.55,
"formula": "Mifflin-St Jeor (1990)",
"splits": [
{
"id": "balanced",
"label": "Balanced",
"protein": 30,
"carbs": 40,
"fat": 30,
"proteinG": 200,
"carbsG": 266,
"fatG": 89
}
],
"note": "This is an indication, not medical advice."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/macro-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"age":30,"sex":"male","heightCm":178,"weightKg":75,"activity":"moderate","goal":"maintain"}'
POST/api/v1/tools/sleep-calculator
Sleep Calculator
Bedtimes or wake-up times that complete whole sleep cycles. From one clock time it counts six, five, four and three blocks of 90 minutes, plus the 15 minutes an average adult needs to fall asleep, so the alarm lands between cycles instead of in deep sleep. This is an indication, not medical advice.
Try the browser version of this tool
· Request body
· request.json
{
"time": "07:00",
"mode": "wake"
}
· Response
· response.json
{
"mode": "wake",
"time": "07:00",
"cycleMinutes": 90,
"fallAsleepMinutes": 15,
"options": [
{
"cycles": 6,
"time": "9:45 PM",
"hours": 9,
"quality": "Optimal (9 h sleep)",
"tone": "optimal"
}
],
"note": "This is an indication, not medical advice."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/sleep-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"time":"07:00","mode":"wake"}'
POST/api/v1/tools/water-intake-calculator
Water Intake Calculator
Daily water intake from weight, activity and climate. The base is 35 ml per kilogram of body weight, the midpoint of the usual 30 to 40 ml guideline, plus 350 ml for every 30 minutes of exercise and a flat 500 ml in a hot or humid climate, reported in litres and in 250 ml glasses. This is an indication, not medical advice.
Try the browser version of this tool
· Request body
· request.json
{
"weightKg": 75,
"exerciseMinutes": 30,
"climate": "normal"
}
· Response
· response.json
{
"weightKg": 75,
"exerciseMinutes": 30,
"climate": "normal",
"baseL": 2.625,
"exerciseL": 0.35,
"climateL": 0,
"totalL": 2.975,
"glasses": 12,
"note": "This is an indication, not medical advice."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/water-intake-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"weightKg":75,"exerciseMinutes":30,"climate":"normal"}'
POST/api/v1/tools/body-fat-calculator
Body Fat Calculator
Body fat percentage from tape measurements using the US Navy method. The Hodgdon and Beckett (1984) circumference formula takes height, neck and waist for men and adds the hip for women, returns the American Council on Exercise category band, and splits a body weight into fat and lean mass when one is given. This is an indication, not medical advice.
Try the browser version of this tool
· Request body
· request.json
{
"sex": "male",
"heightCm": 178,
"neckCm": 38,
"waistCm": 85,
"hipCm": 95,
"weightKg": 80
}
· Response
· response.json
{
"sex": "male",
"bodyFatPercent": 16.44,
"category": "Fitness",
"fatMassKg": 13.15,
"leanMassKg": 66.85,
"formula": "US Navy circumference method (Hodgdon and Beckett, 1984)",
"categories": [
{
"id": "fit",
"label": "Fitness",
"male": [
14,
17
],
"female": [
21,
24
]
}
],
"note": "This is an indication, not medical advice."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/body-fat-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"sex":"male","heightCm":178,"neckCm":38,"waistCm":85,"hipCm":95,"weightKg":80}'
POST/api/v1/tools/bmr-calculator
BMR Calculator
Basal metabolic rate from sex, age, height and weight, by both Mifflin-St Jeor (1990) and the revised Harris-Benedict (Roza and Shizgal, 1984), so the spread between them shows the uncertainty. Also returns total daily energy expenditure at all five activity factors, from 1.2 sedentary to 1.9 extra active. This is an indication, not medical advice.
Try the browser version of this tool
· Request body
· request.json
{
"sex": "male",
"age": 30,
"heightCm": 178,
"weightKg": 75
}
· Response
· response.json
{
"sex": "male",
"age": 30,
"mifflin": 1718,
"harris": 1777,
"formulas": [
"Mifflin-St Jeor (1990)",
"Harris-Benedict revised (1984)"
],
"tdee": [
{
"id": "moderate",
"label": "Moderately active (3-5 days/week)",
"factor": 1.55,
"mifflin": 2662,
"harris": 2754
}
],
"note": "This is an indication, not medical advice."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/bmr-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"sex":"male","age":30,"heightCm":178,"weightKg":75}'
POST/api/v1/tools/ideal-weight-calculator
Ideal Weight Calculator
Ideal body weight from height and sex by the common formulas: Robinson (1983), Miller (1983), Devine (1974) and Hamwi (1964), with their average and the WHO healthy BMI band of 18.5 to 24.9 for the same height, all in kilograms and pounds. This is an indication, not medical advice.
Try the browser version of this tool
· Request body
· request.json
{
"heightCm": 178,
"sex": "male"
}
· Response
· response.json
{
"sex": "male",
"heightCm": 178,
"formulas": [
{
"name": "Robinson (1983)",
"kg": 71.15,
"lb": 156.86
}
],
"averageKg": 72.49,
"averageLb": 159.81,
"healthyBmiRange": {
"minKg": 58.61,
"maxKg": 78.89,
"minLb": 129.21,
"maxLb": 173.92
},
"note": "This is an indication, not medical advice."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/ideal-weight-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"heightCm":178,"sex":"male"}'
POST/api/v1/tools/calorie-calculator
Calorie Calculator
Daily calories to maintain, lose or gain weight from your details and activity. Mifflin-St Jeor (1990) sets the basal rate and drives the targets, revised Harris-Benedict (1984) is returned beside it for comparison, and the maintenance figure is also split into the balanced 30/40/30 macros. Consult a registered dietitian for personalized nutrition advice.
Try the browser version of this tool
· Request body
· request.json
{
"sex": "male",
"age": 30,
"heightCm": 178,
"weightKg": 75,
"activity": "moderate"
}
· Response
· response.json
{
"sex": "male",
"activity": "moderate",
"activityFactor": 1.55,
"bmrMifflin": 1718,
"bmrHarris": 1777,
"tdeeMifflin": 2662,
"tdeeHarris": 2754,
"maintenance": 2662,
"weightLoss": 2162,
"weightGain": 3162,
"macros": {
"protein": 200,
"carbs": 266,
"fat": 89
},
"formulas": [
"Mifflin-St Jeor (1990)",
"Harris-Benedict revised (1984)"
],
"note": "Consult a registered dietitian for personalized nutrition advice."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/calorie-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"sex":"male","age":30,"heightCm":178,"weightKg":75,"activity":"moderate"}'
POST/api/v1/tools/running-pace-calculator
Running Pace Calculator
Pace, time or distance from the other two, with splits. Give any two of the three and it returns the missing one, the pace in both minutes per kilometre and per mile, the speed in km/h, a cumulative split for every whole unit, and the finish time at that same pace for seven race distances from 1 km to the marathon.
Try the browser version of this tool
· Request body
· request.json
{
"solve": "pace",
"unit": "km",
"distance": 10,
"time": "55:00",
"pace": "5:30"
}
· Response
· response.json
{
"solve": "pace",
"unit": "km",
"distance": 10,
"timeSeconds": 3300,
"time": "55:00",
"paceSeconds": 330,
"pace": "5:30",
"pacePerKm": "5:30",
"pacePerMile": "8:51",
"speedKmh": 10.909,
"resultLabel": "Pace per km",
"resultValue": "5:30 /km",
"splits": [
{
"at": 1,
"time": "5:30"
}
],
"predictions": [
{
"label": "Marathon",
"km": 42.195,
"time": "3:52:04"
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/running-pace-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"solve":"pace","unit":"km","distance":10,"time":"55:00","pace":"5:30"}'
POST/api/v1/tools/tdee-calculator
TDEE Calculator
Total daily energy expenditure from BMR and activity level. The basal rate is Mifflin-St Jeor (1990) and comes from the same function the BMR tool uses, multiplied by an activity factor from 1.2 to 1.9, with five ready-made calorie targets from a 500 kcal cut to a 500 kcal bulk. This is an indication, not medical advice.
Try the browser version of this tool
· Request body
· request.json
{
"sex": "male",
"age": 30,
"heightCm": 178,
"weightKg": 75,
"activityFactor": 1.55
}
· Response
· response.json
{
"sex": "male",
"activityFactor": 1.55,
"bmr": 1718,
"tdee": 2662,
"formula": "Mifflin-St Jeor (1990)",
"targets": [
{
"label": "Maintenance",
"kcal": 2662,
"note": "Hold current weight"
}
],
"note": "This is an indication, not medical advice."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/tdee-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"sex":"male","age":30,"heightCm":178,"weightKg":75,"activityFactor":1.55}'
POST/api/v1/tools/due-date-calculator
Due Date Calculator
Estimated due date and current week from the last period or conception date. Naegele's rule adds 280 days to the first day of the last menstrual period, or 266 days when counting from conception, and the result also carries gestational age, trimester and the 12, 20, 28 and 37 week milestone dates. Estimate only, consult your midwife or doctor.
Try the browser version of this tool
· Request body
· request.json
{
"date": "2026-01-01",
"method": "lmp",
"today": "2026-03-01"
}
· Response
· response.json
{
"method": "lmp",
"from": "2026-01-01",
"lmpDate": "2026-01-01",
"dueDate": "2026-10-08",
"gestationalAge": {
"weeks": 8,
"days": 3,
"totalDays": 59
},
"trimester": "First trimester",
"milestones": [
{
"label": "Full term (37 weeks)",
"date": "2026-09-17"
}
],
"formula": "LMP + 280 days (Naegele's rule)",
"note": "Estimate only, consult your midwife or doctor."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/due-date-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"date":"2026-01-01","method":"lmp","today":"2026-03-01"}'
POST/api/v1/tools/ovulation-calculator
Ovulation Calculator
Fertile window and ovulation day from the last period and cycle length. The calendar method places ovulation 14 days before the next period rather than 14 days after the last one, opens the fertile window five days before it and closes it one day after, and projects the same pattern across three cycles. Estimate only, consult your midwife or doctor.
Try the browser version of this tool
· Request body
· request.json
{
"lastPeriod": "2026-03-01",
"cycleLength": 28,
"today": "2026-03-10"
}
· Response
· response.json
{
"cycleLength": 28,
"cycles": [
{
"periodStart": "2026-03-01",
"ovulation": "2026-03-15",
"fertileStart": "2026-03-10",
"fertileEnd": "2026-03-16",
"nextPeriod": "2026-03-29"
}
],
"ovulation": "2026-03-15",
"fertileWindow": {
"start": "2026-03-10",
"end": "2026-03-16"
},
"nextPeriod": "2026-03-29",
"daysUntilOvulation": 5,
"daysUntilNextPeriod": 19,
"note": "Estimate only, consult your midwife or doctor."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/ovulation-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"lastPeriod":"2026-03-01","cycleLength":28,"today":"2026-03-10"}'
POST/api/v1/tools/one-rep-max-calculator
One Rep Max Calculator
Estimated one repetition maximum from a weight and reps, with percentages. Four formulas run side by side, Epley, Brzycki, Lombardi and O'Conner, and their average drives a training table from 95% down to 50% with the usual rep range for each load. This is an indication for training purposes, not medical advice.
Try the browser version of this tool
· Request body
· request.json
{
"weight": 100,
"reps": 5
}
· Response
· response.json
{
"weight": 100,
"reps": 5,
"epley": 116.67,
"brzycki": 112.5,
"lombardi": 117.46,
"oconner": 112.5,
"average": 114.78,
"tested": false,
"formulas": [
"Epley",
"Brzycki",
"Lombardi",
"O'Conner"
],
"percentages": [
{
"percent": 85,
"weight": 97.56,
"reps": "5-6",
"focus": "Strength"
}
],
"note": "This is an indication for training purposes, not medical advice. Never attempt a true max without proper warm-up and a spotter."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/one-rep-max-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"weight":100,"reps":5}'
POST/api/v1/tools/date-calculator
Date Calculator
Add or subtract days, weeks, months or years from a date and get the date you land on, written out with its weekday. The arithmetic is calendar aware and runs in UTC, so leap years and month lengths are handled and the answer never shifts with a time zone.
Try the browser version of this tool
· Request body
· request.json
{
"amount": 90,
"unit": "days",
"operation": "add",
"startDate": "2026-03-15"
}
· Response
· response.json
{
"startDate": "2026-03-15",
"startWeekday": "Sunday",
"operation": "add",
"amount": 90,
"unit": "days",
"resultDate": "2026-06-13",
"weekday": "Saturday",
"formatted": "Saturday, June 13, 2026",
"daysDifference": 90
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/date-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"amount":90,"unit":"days","operation":"add","startDate":"2026-03-15"}'
POST/api/v1/tools/fraction-calculator
Fraction Calculator
Add, subtract, multiply or divide two fractions, mixed numbers included, and get the answer reduced to lowest terms. The arithmetic is exact whole-number arithmetic, so nothing is rounded through a decimal on the way, and the result comes back as a fraction, a mixed number and a decimal.
Try the browser version of this tool
· Request body
· request.json
{
"a": {
"numerator": 1,
"denominator": 2
},
"b": {
"numerator": 1,
"denominator": 3
},
"operation": "+"
}
· Response
· response.json
{
"numerator": 5,
"denominator": 6,
"fraction": "5/6",
"mixed": "5/6",
"decimal": 0.8333333333333334,
"expression": "1/2 + 1/3 = 5/6"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/fraction-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"a":{"numerator":1,"denominator":2},"b":{"numerator":1,"denominator":3},"operation":"+"}'
POST/api/v1/tools/ratio-calculator
Ratio Calculator
Reduce a ratio to lowest whole-number terms, solve a proportion A:B = C:D for the one value left out, or scale a ratio by a factor for a recipe or a mix. Reducing is exact whole-number arithmetic, so a ratio written with decimals is scaled to integers first rather than rounded.
Try the browser version of this tool
· Request body
· request.json
{
"mode": "simplify",
"a": 1920,
"b": 1080,
"c": 9,
"d": 12,
"factor": 1.5
}
· Response
· response.json
{
"mode": "simplify",
"a": 16,
"b": 9,
"ratio": "16:9",
"decimal": 1.7777777777777777,
"solvedFor": null,
"solved": null
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/ratio-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"mode":"simplify","a":1920,"b":1080,"c":9,"d":12,"factor":1.5}'
POST/api/v1/tools/average-calculator
Average Calculator
Every average of a list of numbers in one call: mean, median, mode, sum, count, minimum, maximum, range, and the geometric and harmonic means. A list where nothing repeats has no mode, and the two positive-only means come back null when any value is zero or below.
Try the browser version of this tool
· Request body
· request.json
{
"values": [
12,
15,
9,
21,
15,
18
]
}
· Response
· response.json
{
"count": 6,
"sum": 90,
"mean": 15,
"median": 15,
"modes": [
15
],
"min": 9,
"max": 21,
"range": 12,
"geometricMean": 14.47,
"harmonicMean": 13.92,
"sorted": [
9,
12,
15,
15,
18,
21
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/average-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"values":[12,15,9,21,15,18]}'
POST/api/v1/tools/standard-deviation-calculator
Standard Deviation Calculator
Standard deviation and variance of a list of numbers, both the sample and the population figures, plus the mean, the sum and the sum of squared deviations. The `type` field says which of the two the headline standardDeviation reports: the sample one unless asked otherwise, or the population one when there is a single value.
Try the browser version of this tool
· Request body
· request.json
{
"values": [
4,
8,
15,
16,
23,
42
],
"type": "sample"
}
· Response
· response.json
{
"type": "sample",
"count": 6,
"sum": 108,
"mean": 18,
"sumOfSquares": 910,
"sampleStandardDeviation": 13.49,
"sampleVariance": 182,
"populationStandardDeviation": 12.32,
"populationVariance": 151.67,
"standardDeviation": 13.49,
"variance": 182,
"min": 4,
"max": 42,
"values": [
4,
8,
15,
16,
23,
42
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/standard-deviation-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"values":[4,8,15,16,23,42],"type":"sample"}'
POST/api/v1/tools/gpa-calculator
GPA Calculator
Work out a grade point average from courses that each have a grade and a credit weight, on the 4.0 letter scale, the 10-point European scale or percentages. Returns the GPA on the 4.0 scale with its letter, its honours classification and the credits counted.
Try the browser version of this tool
· Request body
· request.json
{
"courses": [
{
"name": "Calculus I",
"grade": "A",
"credits": 4
},
{
"name": "English Composition",
"grade": "A-",
"credits": 3
},
{
"name": "Introduction to CS",
"grade": "B+",
"credits": 3
}
],
"scale": "4.0"
}
· Response
· response.json
{
"scale": "4.0",
"gpa": 3.7,
"letter": "A-",
"classification": "Magna Cum Laude",
"totalCredits": 10,
"countedCourses": 3,
"courses": [
{
"name": "Calculus I",
"grade": "A",
"credits": 4,
"points": 4
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/gpa-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"courses":[{"name":"Calculus I","grade":"A","credits":4},{"name":"English Composition","grade":"A-","credits":3},{"name":"Introduction to CS","grade":"B+","credits":3}],"scale":"4.0"}'
POST/api/v1/tools/grade-calculator
Grade Calculator
Average the assessments of one course into the weighted grade it stands at, from each item's score and what it is worth. Divides by the weight actually entered, so a half-graded course reports the average so far rather than a score dragged down by work not handed in yet.
Try the browser version of this tool
· Request body
· request.json
{
"items": [
{
"name": "Homework",
"score": 85,
"weight": 20
},
{
"name": "Midterm",
"score": 78,
"weight": 30
},
{
"name": "Project",
"score": 92,
"weight": 20
}
]
}
· Response
· response.json
{
"weightedAverage": 84,
"totalWeight": 70,
"remainingWeight": 30,
"countedItems": 3,
"items": [
{
"name": "Homework",
"score": 85,
"weight": 20,
"points": 1700
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/grade-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"items":[{"name":"Homework","score":85,"weight":20},{"name":"Midterm","score":78,"weight":30},{"name":"Project","score":92,"weight":20}]}'
POST/api/v1/tools/final-grade-calculator
Final Grade Calculator
Work out the score needed on a final exam to finish a course at a target grade, from the grade so far and what the final is worth. Says plainly whether the target is reachable, already secured, or out of reach, and prices the usual A to D targets at the same weight.
Try the browser version of this tool
· Request body
· request.json
{
"currentGrade": 85,
"targetGrade": 90,
"finalWeightPercent": 30
}
· Response
· response.json
{
"currentGrade": 85,
"targetGrade": 90,
"finalWeightPercent": 30,
"requiredScore": 101.67,
"achievable": false,
"alreadySecured": false,
"verdict": {
"text": "Not possible without extra credit",
"kind": "impossible"
},
"commonTargets": [
{
"label": "A (90%)",
"target": 90,
"required": 101.67,
"verdict": {
"text": "Not possible without extra credit",
"kind": "impossible"
}
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/final-grade-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"currentGrade":85,"targetGrade":90,"finalWeightPercent":30}'
POST/api/v1/tools/test-grade-calculator
Test Grade Calculator
Turn a number of questions and a number of wrong answers into a percentage and a letter grade, with a chart pricing every possible number of wrong answers on that test. The letter cutoffs default to the US ten point scale and can be replaced.
Try the browser version of this tool
· Request body
· request.json
{
"questions": 25,
"wrong": 3,
"scale": {
"a": 90,
"b": 80,
"c": 70,
"d": 60
}
}
· Response
· response.json
{
"questions": 25,
"wrong": 3,
"correct": 22,
"score": 88,
"letter": "B",
"scale": {
"a": 90,
"b": 80,
"c": 70,
"d": 60
},
"chart": [
{
"wrong": 0,
"score": 100,
"letter": "A"
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/test-grade-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"questions":25,"wrong":3,"scale":{"a":90,"b":80,"c":70,"d":60}}'
POST/api/v1/tools/grade-curve-calculator
Grade Curve Calculator
Curve a set of test scores by one of the three methods teachers use: add the same points to everyone, take the square root and multiply by ten, or scale the highest score in the room up to 100. Returns every adjusted score plus the class mean, median, minimum and maximum before and after.
Try the browser version of this tool
· Request body
· request.json
{
"scores": [
72,
85,
64,
91,
58,
77,
69,
88
],
"method": "sqrt",
"flatPoints": 5,
"capAt100": true
}
· Response
· response.json
{
"method": "sqrt",
"capAt100": true,
"flatPoints": 5,
"count": 8,
"scores": [
{
"original": 72,
"curved": 84.85
}
],
"before": {
"mean": 75.5,
"median": 74.5,
"min": 58,
"max": 91
},
"after": {
"mean": 86.65,
"median": 86.3,
"min": 76.16,
"max": 95.39
}
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/grade-curve-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"scores":[72,85,64,91,58,77,69,88],"method":"sqrt","flatPoints":5,"capAt100":true}'
POST/api/v1/tools/percentage-to-cgpa-calculator
Percentage to CGPA Calculator
Convert percentage marks to CGPA on the Indian 10-point scale using the CBSE divisor of 9.5, or convert a CGPA back to a percentage. Returns the indicative American 4-point GPA alongside it, which is what an overseas application asks for.
Try the browser version of this tool
· Request body
· request.json
{
"value": 85,
"direction": "toCgpa",
"divisor": 9.5
}
· Response
· response.json
{
"direction": "toCgpa",
"divisor": 9.5,
"input": 85,
"cgpa": 8.95,
"percentage": 85,
"gpa4": 3.15,
"formula": "85 / 9.5 = 8.95 CGPA"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/percentage-to-cgpa-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"value":85,"direction":"toCgpa","divisor":9.5}'
POST/api/v1/tools/meeting-cost-calculator
Meeting Cost Calculator
Price a meeting in salary from the number of attendees, one blended hourly rate and how long it runs. Returns the total, the cost per minute and the cost per person, so a recurring meeting can be weighed against what it produces.
Try the browser version of this tool
· Request body
· request.json
{
"attendees": 5,
"hourlyRate": 75,
"durationMinutes": 60,
"currency": "USD"
}
· Response
· response.json
{
"attendees": 5,
"hourlyRate": 75,
"durationMinutes": 60,
"currency": "USD",
"symbol": "$",
"totalCost": 375,
"costPerMinute": 6.25,
"costPerHour": 375,
"costPerPerson": 75,
"formattedTotal": "$375.00"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/meeting-cost-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"attendees":5,"hourlyRate":75,"durationMinutes":60,"currency":"USD"}'
POST/api/v1/tools/fuel-cost-calculator
Fuel Cost Calculator
Work out the fuel a journey burns and what it costs, from a distance in kilometres or miles, a consumption figure in any of the four common units, and a pump price per litre or gallon. Handles return trips, a repeat count for a monthly commute, and splitting the bill between passengers.
Try the browser version of this tool
· Request body
· request.json
{
"distance": 100,
"distanceUnit": "km",
"consumption": 6.5,
"consumptionUnit": "l100km",
"price": 1.95,
"priceUnit": "liter",
"passengers": 1,
"roundTrip": false,
"trips": 1
}
· Response
· response.json
{
"totalKm": 100,
"liters": 6.5,
"cost": 12.68,
"costPerPerson": 12.68,
"passengers": 1,
"trips": 1,
"roundTrip": false,
"litersPer100Km": 6.5,
"pricePerLiter": 1.95,
"costPerTrip": 12.68
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/fuel-cost-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"distance":100,"distanceUnit":"km","consumption":6.5,"consumptionUnit":"l100km","price":1.95,"priceUnit":"liter","passengers":1,"roundTrip":false,"trips":1}'
POST/api/v1/tools/appliance-energy-cost-calculator
Appliance Energy Cost Calculator
Price what an appliance costs to run, from its wattage, how it is used and the price of a kilowatt hour. Takes either a daily pattern (hours a day) or a weekly one (runs per week times minutes a run), and returns kilowatt hours and money per day, per month and per year.
Try the browser version of this tool
· Request body
· request.json
{
"watts": 90,
"pricePerKwh": 0.3,
"mode": "daily",
"hoursPerDay": 4,
"usesPerWeek": 4,
"minutesPerUse": 60
}
· Response
· response.json
{
"watts": 90,
"mode": "daily",
"pricePerKwh": 0.3,
"kwhDay": 0.36,
"kwhMonth": 10.96,
"kwhYear": 131.49,
"costDay": 0.11,
"costMonth": 3.29,
"costYear": 39.45,
"hoursPerDay": 4
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/appliance-energy-cost-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"watts":90,"pricePerKwh":0.3,"mode":"daily","hoursPerDay":4,"usesPerWeek":4,"minutesPerUse":60}'
POST/api/v1/tools/dog-age-calculator
Dog Age Calculator
Convert a dog's age into human years with the epigenetic research formula, 16 x ln(age) + 31, and return the size-adjusted chart estimate and the old multiply-by-seven answer next to it. Cats are handled by the standard veterinary chart.
Try the browser version of this tool
· Request body
· request.json
{
"age": 5,
"species": "dog",
"size": "medium"
}
· Response
· response.json
{
"species": "dog",
"size": "medium",
"age": 5,
"humanYears": 56.75,
"method": "Modern research formula",
"chartYears": 36,
"sevenTimesRule": 35
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/dog-age-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"age":5,"species":"dog","size":"medium"}'
POST/api/v1/tools/aspect-ratio-calculator
Aspect Ratio Calculator
Reduce a width and a height to their aspect ratio, or work out the side that is missing at a given ratio so an image or a canvas keeps its proportions. Also returns the decimal ratio, the megapixels and whether the result is landscape, portrait or square.
Try the browser version of this tool
· Request body
· request.json
{
"width": 1920,
"height": 1080,
"ratioWidth": 16,
"ratioHeight": 9
}
· Response
· response.json
{
"width": 1920,
"height": 1080,
"ratio": "16:9",
"ratioWidth": 16,
"ratioHeight": 9,
"decimal": 1.7777777777777777,
"megapixels": 2.0736,
"orientation": "landscape",
"solvedFor": "ratio"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/aspect-ratio-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"width":1920,"height":1080,"ratioWidth":16,"ratioHeight":9}'
POST/api/v1/tools/military-time-converter
Military Time Converter
Convert a time between the 24-hour military clock and the 12-hour AM/PM clock, in either direction, and get both spellings plus the spoken military phrase. Accepts 1:30 PM, 130pm, 1330 and 13:00.
Try the browser version of this tool
· Request body
· request.json
{
"time": "1:30 PM",
"from": "auto"
}
· Response
· response.json
{
"input": "1:30 PM",
"readAs": "standard",
"hours": 13,
"minutes": 30,
"military": "1330",
"military24": "13:30",
"standard": "1:30 PM",
"spoken": "13 30 (1330 hours)"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/military-time-converter \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"time":"1:30 PM","from":"auto"}'
POST/api/v1/tools/timesheet-calculator
Timesheet Calculator
Turn clock-in and clock-out times into hours worked: the net hours per day after the break, the weekly total in decimal hours and in hours and minutes, the split between regular and overtime hours at a threshold you choose, and gross pay at a flat hourly rate. Overnight shifts are handled, a day nobody worked is reported rather than guessed, and the result carries the page's caveat that this is an indication, not payroll or legal advice.
Try the browser version of this tool
· Request body
· request.json
{
"days": [
{
"label": "Monday",
"start": "09:00",
"end": "17:30",
"breakMinutes": 30
},
{
"label": "Tuesday",
"start": "09:00",
"end": "17:30",
"breakMinutes": 30
},
{
"label": "Wednesday",
"start": "09:00",
"end": "17:30",
"breakMinutes": 30
},
{
"label": "Thursday",
"start": "09:00",
"end": "17:30",
"breakMinutes": 30
},
{
"label": "Friday",
"start": "09:00",
"end": "17:00",
"breakMinutes": 30
}
],
"overtimeThresholdHours": 40,
"hourlyRate": 25
}
· Response
· response.json
{
"days": [
{
"label": "Monday",
"start": "09:00",
"end": "17:30",
"breakMinutes": 30,
"hours": 8,
"overnight": false
}
],
"totalHours": 39.5,
"totalHoursHm": "39h 30m",
"regularHours": 39.5,
"overtimeHours": 0,
"overtimeThresholdHours": 40,
"daysWorked": 5,
"hourlyRate": 25,
"grossPay": 987.5,
"note": "Indication only, not payroll or legal advice."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/timesheet-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"days":[{"label":"Monday","start":"09:00","end":"17:30","breakMinutes":30},{"label":"Tuesday","start":"09:00","end":"17:30","breakMinutes":30},{"label":"Wednesday","start":"09:00","end":"17:30","breakMinutes":30},{"label":"Thursday","start":"09:00","end":"17:30","breakMinutes":30},{"label":"Friday","start":"09:00","end":"17:00","breakMinutes":30}],"overtimeThresholdHours":40,"hourlyRate":25}'
POST/api/v1/tools/overtime-calculator
Overtime Calculator
Work out a pay packet that mixes rates: regular hours at the base rate, overtime hours at a multiplier such as the 1.5x the United States FLSA sets as a minimum, and double-time hours at twice the base rate. Returns each line, the total, the total hours and the effective rate across all of them, which is the number to compare a salaried offer against. An indication, not payroll or legal advice.
Try the browser version of this tool
· Request body
· request.json
{
"hourlyRate": 25,
"regularHours": 40,
"overtimeHours": 5,
"doubleTimeHours": 0,
"overtimeMultiplier": 1.5
}
· Response
· response.json
{
"hourlyRate": 25,
"overtimeMultiplier": 1.5,
"overtimeRate": 37.5,
"doubleTimeRate": 50,
"regularPay": 1000,
"overtimePay": 187.5,
"doubleTimePay": 0,
"totalPay": 1187.5,
"totalHours": 45,
"effectiveRate": 26.39,
"note": "Indication only, not payroll or legal advice."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/overtime-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"hourlyRate":25,"regularHours":40,"overtimeHours":5,"doubleTimeHours":0,"overtimeMultiplier":1.5}'
POST/api/v1/tools/pto-calculator
PTO Calculator
Project a paid time off balance: give an accrual rate either as hours per pay period or as days per year, plus the hours in the bank and the hours already booked, and get the accrual per year and per month, the balance after what is planned, twelve months of projected balance, and the balance on a target date. Accrual caps, carry-over deadlines and waiting periods are deliberately not modelled, which the note repeats.
Try the browser version of this tool
· Request body
· request.json
{
"mode": "perPeriod",
"accrualPerPeriod": 4.62,
"payFrequency": "biweekly",
"daysPerYear": 15,
"hoursPerDay": 8,
"currentBalanceHours": 40,
"plannedHours": 0,
"targetDate": "2026-07-01",
"today": "2026-01-01"
}
· Response
· response.json
{
"hoursPerYear": 120.12,
"daysPerYear": 15.02,
"hoursPerMonth": 10.01,
"hoursPerDay": 8,
"balanceAfterPlanned": 40,
"daysAfterPlanned": 5,
"projected": {
"date": "2026-07-01",
"hours": 99.5,
"days": 12.4,
"months": 5.9
},
"schedule": [
{
"month": "Feb 2026",
"hours": 50,
"days": 6.3
}
],
"note": "Indication only. Accrual caps, carry-over limits, and waiting periods in your company policy are not modeled."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/pto-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"mode":"perPeriod","accrualPerPeriod":4.62,"payFrequency":"biweekly","daysPerYear":15,"hoursPerDay":8,"currentBalanceHours":40,"plannedHours":0,"targetDate":"2026-07-01","today":"2026-01-01"}'
POST/api/v1/tools/salary-calculator-converter
Salary Converter
Express one gross salary in every pay period at once: per hour, per day, per week, per fortnight, per month and per year. Give the amount and the period it is quoted in, and adjust the hours per week and weeks per year for part-time, term-time or shift work. A day is a fifth of the working week rather than a fixed eight hours, so a 36 hour week converts honestly. Gross only: tax, contributions and benefits are not modelled.
Try the browser version of this tool
· Request body
· request.json
{
"amount": 85000,
"period": "annual",
"hoursPerWeek": 40,
"weeksPerYear": 52
}
· Response
· response.json
{
"period": "annual",
"amount": 85000,
"hoursPerWeek": 40,
"weeksPerYear": 52,
"hoursPerYear": 2080,
"annual": 85000,
"monthly": 7083.33,
"biweekly": 3269.23,
"weekly": 1634.62,
"daily": 326.92,
"hourly": 40.87
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/salary-calculator-converter \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"amount":85000,"period":"annual","hoursPerWeek":40,"weeksPerYear":52}'
POST/api/v1/tools/hypotheek-calculator
Dutch Mortgage Calculator
Work out what a Dutch mortgage costs per month: an annuiteitenhypotheek, where the payment stays the same and the split between interest and repayment shifts, or a lineaire hypotheek, where the payment falls every month. Returns the first and last monthly payment, the interest in the first month, the total interest and the total cost, plus a net payment after hypotheekrenteaftrek when you give the deduction rate. An indication, not mortgage or tax advice: NHG, income tests and lender conditions are not modelled.
Try the browser version of this tool
· Request body
· request.json
{
"amount": 300000,
"years": 30,
"annualRatePercent": 4.5,
"type": "annuiteit",
"deductionRatePercent": 36.97
}
· Response
· response.json
{
"amount": 300000,
"years": 30,
"months": 360,
"annualRatePercent": 4.5,
"type": "annuiteit",
"firstMonthlyPayment": 1520.06,
"lastMonthlyPayment": 1520.06,
"firstMonthInterest": 1125,
"totalInterest": 247220.13,
"totalCost": 547220.13,
"deductionRatePercent": 36.97,
"netFirstMonthlyPayment": 1104.15,
"note": "This is an indication, not mortgage or tax advice."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/hypotheek-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"amount":300000,"years":30,"annualRatePercent":4.5,"type":"annuiteit","deductionRatePercent":36.97}'
POST/api/v1/tools/salaris-calculator
Dutch Salary Calculator
Estimate a Dutch net salary from a gross one, or the gross salary needed for a net one, with the 2026 box 1 brackets (36.97% up to EUR 75,518, 49.50% above) and the two credits that follow income: the algemene heffingskorting and the arbeidskorting. Returns gross and net per year and per month, the tax before and after credits, each credit, and the effective rate. An estimate based on 2026 Dutch tax rates: it does not account for social security premiums, pension contributions, or individual circumstances, so it is not tax advice.
Try the browser version of this tool
· Request body
· request.json
{
"amount": 45000,
"period": "year",
"mode": "grossToNet"
}
· Response
· response.json
{
"mode": "grossToNet",
"grossAnnual": 45000,
"grossMonthly": 3750,
"taxBeforeCredits": 16636.5,
"generalTaxCredit": 2023.5,
"employmentTaxCredit": 5203.77,
"taxAfterCredits": 9409.24,
"netAnnual": 35590.76,
"netMonthly": 2965.9,
"effectiveTaxRatePercent": 20.91,
"note": "This calculation is an estimate based on 2026 Dutch tax rates."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/salaris-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"amount":45000,"period":"year","mode":"grossToNet"}'
POST/api/v1/tools/dutch-student-finance-calculator
Dutch Student Finance Calculator
Estimate what DUO pays a Dutch student each month: the basisbeurs for mbo or hbo/wo, living at home or away, plus the aanvullende beurs that follows the parents' income, and the student travel product. The middle income band returns a range rather than a number, because DUO phases the aanvullende beurs out between roughly EUR 41,500 and EUR 70,000 of combined 2024 parental income. An indication, not advice: the official 2026 DUO amounts are indexed during the year.
Try the browser version of this tool
· Request body
· request.json
{
"study": "hbowo",
"living": "away",
"parentalIncome": "low"
}
· Response
· response.json
{
"study": "hbowo",
"living": "away",
"parentalIncome": "low",
"basicGrant": 324.52,
"supplementaryGrantLow": 491.08,
"supplementaryGrantHigh": 491.08,
"totalLow": 815.6,
"totalHigh": 815.6,
"travelProduct": "Free public transport on weekdays or weekends, by choice.",
"supplementaryNote": "With a combined parental income below roughly EUR 41,500 you typically get the full aanvullende beurs.",
"note": "This is an indication, not advice. Check duo.nl for your personal calculation."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/dutch-student-finance-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"study":"hbowo","living":"away","parentalIncome":"low"}'
POST/api/v1/tools/dutch-exam-grade-calculator
Dutch Exam Grade Calculator
Turn Dutch exam results into final grades and a havo/vwo pass check: per subject the eindcijfer is the average of the schoolexamen and centraal examen grade rounded to a whole number, and the slaag-zakregeling is then applied in full, the CE average of 5.50, the kernvakkenregel for Nederlands, Engels and wiskunde, and the compensation rules. A CE grade may be given directly or derived from the points scored, the maximum score and the N-term. An indication, not an official determination, and vmbo has its own regulation.
Try the browser version of this tool
· Request body
· request.json
{
"subjects": [
{
"name": "Nederlands",
"se": 6.5,
"ce": 6.2
},
{
"name": "Engels",
"se": 7.1,
"ce": 6.8
},
{
"name": "Wiskunde A",
"se": 5.8,
"ce": 5.4
},
{
"name": "Geschiedenis",
"se": 6.9,
"ce": 7.2
},
{
"name": "Biologie",
"se": 6.4,
"ce": 6.1
},
{
"name": "Economie",
"se": 7,
"ce": 6.6
}
]
}
· Response
· response.json
{
"subjects": [
{
"name": "Nederlands",
"se": 6.5,
"ce": 6.2,
"hasCe": true,
"final": 6,
"core": true
}
],
"subjectCount": 6,
"ceAverage": 6.38,
"finalAverage": 6.5,
"passed": true,
"checks": [
{
"ok": true,
"text": "All final grades are 6 or higher"
}
],
"note": "This is an indication, not advice. Always check examenblad.nl."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/dutch-exam-grade-calculator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"subjects":[{"name":"Nederlands","se":6.5,"ce":6.2},{"name":"Engels","se":7.1,"ce":6.8},{"name":"Wiskunde A","se":5.8,"ce":5.4},{"name":"Geschiedenis","se":6.9,"ce":7.2},{"name":"Biologie","se":6.4,"ce":6.1},{"name":"Economie","se":7,"ce":6.6}]}'
POST/api/v1/tools/credit-card-validator
Card Number Validator
Check a payment card number the way a checkout form does: the Luhn checksum that every major network uses to catch a mistyped digit, and the scheme behind the prefix (Visa, Mastercard, Amex, Discover, JCB, Diners). It is a format check and nothing more: it says nothing about whether a card exists, is active or has funds. The number is never logged, stored or returned, and the result shows at most the last four digits.
Try the browser version of this tool
· Request body
· request.json
{
"cardNumber": "4242 4242 4242 4242"
}
· Response
· response.json
{
"valid": true,
"luhnValid": true,
"scheme": "Visa",
"length": 16,
"masked": "**** **** **** 4242",
"note": "Format check only. Nothing is logged or stored."
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/credit-card-validator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"cardNumber":"4242 4242 4242 4242"}'
POST/api/v1/tools/add-line-numbers
Add Line Numbers
Put a sequential number in front of every line of a text, with a chosen first number, step and separator. Blank lines can keep their place without taking a number, and the numbers can be padded so the text after them lines up. Use it to cite log lines, contract clauses or manuscript lines.
Try the browser version of this tool
· Request body
· request.json
{
"text": "alpha\nbeta\ngamma",
"start": 1,
"step": 1,
"separator": ". ",
"skipEmptyLines": false,
"padNumbers": false
}
· Response
· response.json
{
"result": "1. alpha\n2. beta\n3. gamma",
"lines": 3,
"numbered": 3,
"lastNumber": 3
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/add-line-numbers \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"alpha\nbeta\ngamma","start":1,"step":1,"separator":". ","skipEmptyLines":false,"padNumbers":false}'
POST/api/v1/tools/add-prefix-suffix
Add Prefix and Suffix
Put the same text in front of and behind every line of a text. Nothing is escaped or interpreted, so quotes, commas, brackets and HTML tags all pass through as typed. Use it to wrap a column of values in quotes for a SQL IN clause, turn a keyword list into hashtags, or build list markup from plain lines.
Try the browser version of this tool
· Request body
· request.json
{
"text": "apple\nbanana\ncherry",
"prefix": "'",
"suffix": "',",
"skipEmptyLines": true
}
· Response
· response.json
{
"result": "'apple',\n'banana',\n'cherry',",
"lines": 3,
"changed": 3
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/add-prefix-suffix \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"apple\nbanana\ncherry","prefix":"'","suffix":"',","skipEmptyLines":true}'
POST/api/v1/tools/remove-line-breaks
Remove Line Breaks
Join lines that were broken in the wrong places back into flowing text. Each line is trimmed and blank lines are dropped before the join, and the separator can be a space, nothing, or any string such as a comma. Keeping paragraph breaks treats a blank line as a boundary, so a document keeps its shape instead of becoming one wall of text.
Try the browser version of this tool
· Request body
· request.json
{
"text": "A sentence that\nwas broken\nin three.\n\nA second paragraph.",
"separator": " ",
"keepParagraphs": true
}
· Response
· response.json
{
"result": "A sentence that was broken in three.\n\nA second paragraph.",
"linesJoined": 4,
"paragraphs": 2,
"breaksRemoved": 2
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/remove-line-breaks \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"A sentence that\nwas broken\nin three.\n\nA second paragraph.","separator":" ","keepParagraphs":true}'
POST/api/v1/tools/tsv-to-csv
TSV to CSV
Convert tab separated text to CSV, or CSV back to TSV, quoting every field that needs it. A field holding the output delimiter, a double quote, a line break or outer whitespace is wrapped in quotes with inner quotes doubled, which is what stops a value such as Hex bolt, stainless from silently gaining a column. Semicolon output and a UTF-8 byte order mark are there for Excel in comma-decimal locales.
Try the browser version of this tool
· Request body
· request.json
{
"text": "product\tdescription\tprice\nAB-12\tHex bolt, stainless\t0,45",
"direction": "tsv-to-csv",
"delimiter": ",",
"crlf": false,
"byteOrderMark": false,
"trailingNewline": false
}
· Response
· response.json
{
"result": "product,description,price\nAB-12,\"Hex bolt, stainless\",\"0,45\"",
"rows": 2,
"columns": 3,
"quotedFields": 2,
"raggedLines": [],
"delimiter": ","
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/tsv-to-csv \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"product\tdescription\tprice\nAB-12\tHex bolt, stainless\t0,45","direction":"tsv-to-csv","delimiter":",","crlf":false,"byteOrderMark":false,"trailingNewline":false}'
POST/api/v1/tools/csv-column-extractor
CSV Column Extractor
Keep, drop or reorder the columns of a CSV. Columns are named by header text or by 1-based position, and the order they are asked for is the order they come back in, so the same call also reorders. The delimiter is detected when not given, quoted fields holding commas and line breaks survive, and the result is either CSV or one value per line.
Try the browser version of this tool
· Request body
· request.json
{
"csv": "name,email,city\nAlice,alice@example.com,Amsterdam\nBob,bob@example.com,Utrecht",
"columns": [
"city",
"name"
],
"exclude": false,
"delimiter": "auto",
"firstRowHeader": true,
"format": "csv"
}
· Response
· response.json
{
"result": "city,name\nAmsterdam,Alice\nUtrecht,Bob",
"headers": [
"city",
"name"
],
"columns": 2,
"rows": 2,
"delimiter": ","
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/csv-column-extractor \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"csv":"name,email,city\nAlice,alice@example.com,Amsterdam\nBob,bob@example.com,Utrecht","columns":["city","name"],"exclude":false,"delimiter":"auto","firstRowHeader":true,"format":"csv"}'
POST/api/v1/tools/character-counter
Character Counter
Count the characters, characters without spaces, words, sentences, lines and paragraphs of a text, and rank how often each character appears. The shared counts are defined exactly as the word counter defines them, so the two never disagree about the same paragraph. Use it against a field limit: 280 for a post, 160 for an SMS, 155 for a meta description.
Try the browser version of this tool
· Request body
· request.json
{
"text": "Hello world. This is a test!",
"limit": 5
}
· Response
· response.json
{
"characters": 28,
"charactersNoSpaces": 23,
"words": 6,
"sentences": 2,
"lines": 1,
"paragraphs": 1,
"readingTime": {
"minutes": 0,
"seconds": 2,
"text": "2 sec"
},
"frequencies": [
{
"character": "l",
"count": 3,
"percent": 13.04
}
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/character-counter \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"Hello world. This is a test!","limit":5}'
POST/api/v1/tools/text-to-binary
Text to Binary
Turn text into its UTF-8 bytes written as binary, hexadecimal, octal and decimal, or read those numbers back into text. The unit is the byte, not the character, so an accented letter is two groups and an emoji four. Both directions return all four bases at once, and decoding rejects a value that is not a byte or a byte sequence that is not valid UTF-8.
Try the browser version of this tool
· Request body
· request.json
{
"input": "Hi",
"action": "encode",
"format": "binary",
"separator": "space"
}
· Response
· response.json
{
"text": "Hi",
"binary": "01001000 01101001",
"hex": "48 69",
"octal": "110 151",
"decimal": "72 105",
"characters": 2,
"bytes": 2,
"bits": 16
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/text-to-binary \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"input":"Hi","action":"encode","format":"binary","separator":"space"}'
POST/api/v1/tools/upside-down-text
Upside Down Text
Flip text upside down, or mirror it left to right, using Unicode characters that look like rotated or reflected Latin letters. The string is reversed after mapping, so it reads correctly when the screen is turned round or held up to a mirror. The result is ordinary text, so it can be pasted into a bio, a username or a chat message.
Try the browser version of this tool
· Request body
· request.json
{
"text": "hello world",
"mode": "upside"
}
· Response
· response.json
{
"result": "plɹoʍ ollǝɥ",
"mode": "upside",
"mapped": 10,
"unchanged": 1
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/upside-down-text \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"hello world","mode":"upside"}'
POST/api/v1/tools/leetspeak-translator
Leetspeak Translator
Write text in leetspeak at one of three intensities, or read leetspeak back into plain text. Basic swaps the six canonical letters (a4 e3 i1 o0 s5 t7), advanced adds four more, and extreme builds most of the alphabet out of punctuation. Decoding is best effort because leet is ambiguous: the digit 1 stands for both i and l, and this resolves it to l.
Try the browser version of this tool
· Request body
· request.json
{
"text": "paste your leet here",
"action": "encode",
"intensity": "basic"
}
· Response
· response.json
{
"result": "p4573 y0ur l337 h3r3",
"action": "encode",
"intensity": "basic",
"substitutions": 10
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/leetspeak-translator \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"paste your leet here","action":"encode","intensity":"basic"}'
POST/api/v1/tools/keyword-density-analyzer
Keyword Density Analyzer
Count how often each word or phrase appears in a text and what share of it they take up. Phrases are one to five words long, stop words are left out of the table but still counted in the total, and one target keyword can be reported separately whatever its count. Each row is banded: under 1 percent is sparse, 1 to 3 is good, over 5 reads as stuffing.
Try the browser version of this tool
· Request body
· request.json
{
"text": "Keyword density matters. Keyword density is the share of a page a keyword takes up. Good keyword density is between one and three percent.",
"phraseLength": 2,
"minCount": 2,
"limit": 10,
"excludeStopWords": true,
"sortBy": "count",
"order": "desc",
"targetKeyword": "keyword density"
}
· Response
· response.json
{
"totalWords": 24,
"characters": 138,
"uniqueKeywords": 2,
"averageWordLength": 4.67,
"keywords": [
{
"keyword": "keyword density",
"count": 3,
"density": 12.5,
"band": "overstuffed"
}
],
"target": {
"keyword": "keyword density",
"count": 3,
"density": 12.5,
"band": "overstuffed"
}
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/keyword-density-analyzer \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"Keyword density matters. Keyword density is the share of a page a keyword takes up. Good keyword density is between one and three percent.","phraseLength":2,"minCount":2,"limit":10,"excludeStopWords":true,"sortBy":"count","order":"desc","targetKeyword":"keyword density"}'
POST/api/v1/tools/readability-checker
Readability Checker
Score how hard a text is to read with six named formulas: Flesch Reading Ease, Flesch-Kincaid Grade, Gunning Fog, SMOG, Coleman-Liau and the Automated Readability Index. Each is returned under its own name alongside the word, sentence and syllable counts it was built from, plus the mean grade, the school year it maps to and the audience that suits.
Try the browser version of this tool
· Request body
· request.json
{
"text": "The quick brown fox jumps over the lazy dog. This is a sample text to demonstrate the readability checker tool."
}
· Response
· response.json
{
"words": 20,
"sentences": 2,
"syllables": 31,
"complexWords": 3,
"letters": 90,
"averageWordsPerSentence": 10,
"averageSyllablesPerWord": 1.55,
"scores": {
"fleschReadingEase": 65.56,
"fleschKincaidGrade": 6.6,
"gunningFog": 10,
"smogIndex": 9.71,
"colemanLiauIndex": 7.7,
"automatedReadabilityIndex": 4.77
},
"averageGrade": 7.75,
"gradeLabel": "8th grade",
"audience": "Middle school",
"fleschLabel": "Standard"
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/readability-checker \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"text":"The quick brown fox jumps over the lazy dog. This is a sample text to demonstrate the readability checker tool."}'
POST/api/v1/tools/text-similarity-analyzer
Text Similarity Analyzer
Compare two texts with five named measures instead of one unexplained percentage: Jaccard over the word sets, cosine over the word counts, word overlap, Levenshtein edit distance with a ratio, and the longest common subsequence of words. It also returns the words the two share and the words only one of them has, plus word, character and sentence counts for each.
Try the browser version of this tool
· Request body
· request.json
{
"textA": "The quick brown fox jumps over the lazy dog.",
"textB": "The quick brown cat jumps over the lazy dog.",
"commonWordLimit": 50,
"uniqueWordLimit": 30
}
· Response
· response.json
{
"overall": 0.84,
"jaccard": 0.78,
"cosine": 0.91,
"wordOverlap": 0.78,
"levenshteinDistance": 3,
"levenshteinRatio": 0.93,
"levenshteinTruncated": false,
"longestCommonSubsequence": 8,
"a": {
"words": 9,
"characters": 44,
"sentences": 1
},
"b": {
"words": 9,
"characters": 44,
"sentences": 1
},
"commonWords": [
"the",
"quick",
"brown",
"jumps",
"over",
"lazy",
"dog"
],
"onlyInA": [
"fox"
],
"onlyInB": [
"cat"
]
}
· curl example
· terminal
curl -X POST https://toolforte.com/api/v1/tools/text-similarity-analyzer \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{"textA":"The quick brown fox jumps over the lazy dog.","textB":"The quick brown cat jumps over the lazy dog.","commonWordLimit":50,"uniqueWordLimit":30}'