API Reference
234 live endpoints. One key, one request format, per-call credit pricing.
Get API Key
Create one in your dashboard
Authenticate
Add Bearer token to headers
Make Requests
Call any endpoint below
Go Live
Every account gets 100 free credits daily
Authentication
Create a key at Dashboard → API Keys, then send it with every request. Send your key either as a Bearer token or an X-API-Key header — both are equivalent (Authorization takes precedence if both are present):
curl -X POST https://freeconvertingtools.com/api/v1/tools/word-counter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"text": "Hello world"}'curl -X POST https://freeconvertingtools.com/api/v1/tools/word-counter \
-H "X-API-Key: fct_your_key" \
-H "Content-Type: application/json" \
-d '{"text": "Hello world"}'Every response includes x-credits-charged, x-credits-remaining-daily, and x-credits-remaining-monthly headers.
Errors
| Status | Meaning |
|---|---|
400 | Invalid input — the errors array names each bad parameter |
401 | Missing, invalid, or deactivated API key |
402 | Insufficient credits — top up at /pricing |
404 | Unknown tool slug |
429 | Per-key rate limit exceeded |
501 | Tool exists but its API endpoint is not live yet |
Endpoints
Image Tools
/api/v1/tools/png-to-jpg2 credits/callPNG to JPG Converter
Convert a PNG image to JPG. Send `file` as binary multipart form-data; the example below shows the other fields only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to convert (sent as binary multipart/form-data). |
quality | number | No (default 90) | Output quality, from 1 (smallest file) to 100 (best quality). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/png-to-jpg \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"quality":90}'
{
"success": true,
"tool": "png-to-jpg",
"result": "Binary image data — the Content-Type response header names the output format."
}/api/v1/tools/jpg-to-png2 credits/callJPG to PNG Converter
Convert a JPG image to PNG. Send `file` as binary multipart form-data; there are no other fields.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to convert (sent as binary multipart/form-data). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/jpg-to-png \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{}'
{
"success": true,
"tool": "jpg-to-png",
"result": "Binary image data — the Content-Type response header names the output format."
}/api/v1/tools/png-to-webp2 credits/callPNG to WEBP Converter
Convert a PNG image to WEBP. Send `file` as binary multipart form-data; the example below shows the other fields only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to convert (sent as binary multipart/form-data). |
quality | number | No (default 80) | Output quality, from 1 (smallest file) to 100 (best quality). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/png-to-webp \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"quality":80}'
{
"success": true,
"tool": "png-to-webp",
"result": "Binary image data — the Content-Type response header names the output format."
}/api/v1/tools/webp-to-png2 credits/callWEBP to PNG Converter
Convert a WEBP image to PNG. Send `file` as binary multipart form-data; there are no other fields.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to convert (sent as binary multipart/form-data). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/webp-to-png \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{}'
{
"success": true,
"tool": "webp-to-png",
"result": "Binary image data — the Content-Type response header names the output format."
}/api/v1/tools/jpg-to-webp2 credits/callJPG to WEBP Converter
Convert a JPG image to WEBP. Send `file` as binary multipart form-data; the example below shows the other fields only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to convert (sent as binary multipart/form-data). |
quality | number | No (default 80) | Output quality, from 1 (smallest file) to 100 (best quality). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/jpg-to-webp \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"quality":80}'
{
"success": true,
"tool": "jpg-to-webp",
"result": "Binary image data — the Content-Type response header names the output format."
}/api/v1/tools/webp-to-jpg2 credits/callWEBP to JPG Converter
Convert a WEBP image to JPG. Send `file` as binary multipart form-data; the example below shows the other fields only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to convert (sent as binary multipart/form-data). |
quality | number | No (default 90) | Output quality, from 1 (smallest file) to 100 (best quality). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/webp-to-jpg \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"quality":90}'
{
"success": true,
"tool": "webp-to-jpg",
"result": "Binary image data — the Content-Type response header names the output format."
}/api/v1/tools/svg-to-png2 credits/callSVG to PNG Converter
Rasterize an SVG image to PNG. Send `file` as binary multipart form-data; the example below shows the other fields only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to convert (sent as binary multipart/form-data). |
width | number | No | Target width in pixels (height scales to preserve aspect ratio). Defaults to the SVG’s intrinsic size. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/svg-to-png \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"width":512}'
{
"success": true,
"tool": "svg-to-png",
"result": "Binary image data — the Content-Type response header names the output format."
}/api/v1/tools/gif-to-webp2 credits/callGIF to WEBP Converter
Convert a GIF image to WEBP (first frame only). Send `file` as binary multipart form-data; the example below shows the other fields only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to convert (sent as binary multipart/form-data). |
quality | number | No (default 80) | Output quality, from 1 (smallest file) to 100 (best quality). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/gif-to-webp \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"quality":80}'
{
"success": true,
"tool": "gif-to-webp",
"result": "Binary image data — the Content-Type response header names the output format."
}/api/v1/tools/bmp-to-jpg2 credits/callBMP to JPG Converter
Convert an uncompressed 24/32-bit BMP image to JPG. Send `file` as binary multipart form-data; the example below shows the other fields only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to convert (sent as binary multipart/form-data). |
quality | number | No (default 90) | Output quality, from 1 (smallest file) to 100 (best quality). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/bmp-to-jpg \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"quality":90}'
{
"success": true,
"tool": "bmp-to-jpg",
"result": "Binary image data — the Content-Type response header names the output format."
}/api/v1/tools/tiff-to-jpg2 credits/callTIFF to JPG Converter
Convert a TIFF image to JPG. Send `file` as binary multipart form-data; the example below shows the other fields only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to convert (sent as binary multipart/form-data). |
quality | number | No (default 90) | Output quality, from 1 (smallest file) to 100 (best quality). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/tiff-to-jpg \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"quality":90}'
{
"success": true,
"tool": "tiff-to-jpg",
"result": "Binary image data — the Content-Type response header names the output format."
}/api/v1/tools/heic-to-jpg2 credits/callHEIC to JPG Converter
Convert a HEIC/HEIF image to JPG. The magic bytes are checked before decoding, so non-HEIC input fails fast with a descriptive error instead of an opaque decoder crash. Send `file` as binary multipart form-data; the example below shows the other fields only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The HEIC/HEIF image file to convert (sent as binary multipart/form-data). |
quality | number | No (default 90) | Output JPEG quality, from 1 (smallest file) to 100 (best quality). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/heic-to-jpg \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"quality":90}'
{
"success": true,
"tool": "heic-to-jpg",
"result": "Binary image data — Content-Type: image/jpeg."
}/api/v1/tools/image-resizer2 credits/callImage Resizer
Resize an image, keeping its original format (animated GIF: first frame only). BMP input is not supported via the API. Send `file` as binary multipart form-data; the example below shows the other fields only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to convert (sent as binary multipart/form-data). |
width | number | No | Target width in pixels. |
height | number | No | Target height in pixels. |
fit | string (cover | contain | fill | inside | outside) | No (default "inside") | How the image should fit the target width/height. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/image-resizer \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"width":800,"height":600,"fit":"inside"}'
{
"success": true,
"tool": "image-resizer",
"result": "Binary image data — the Content-Type response header names the output format."
}/api/v1/tools/image-compressor2 credits/callImage Compressor
Compress an image to WEBP. Send `file` as binary multipart form-data; the example below shows the other fields only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to convert (sent as binary multipart/form-data). |
quality | number | No (default 70) | Output quality, from 1 (smallest file) to 100 (best quality). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/image-compressor \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"quality":70}'
{
"success": true,
"tool": "image-compressor",
"result": "Binary image data — the Content-Type response header names the output format."
}/api/v1/tools/image-cropper2 credits/callImage Cropper
Crop an image to a rectangle, keeping its original format (animated GIF: first frame only). BMP input is not supported via the API. Send `file` as binary multipart form-data; the example below shows the other fields only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to convert (sent as binary multipart/form-data). |
left | number | Yes | Left edge of the crop rectangle, in pixels. |
top | number | Yes | Top edge of the crop rectangle, in pixels. |
width | number | Yes | Width of the crop rectangle, in pixels. |
height | number | Yes | Height of the crop rectangle, in pixels. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/image-cropper \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"left":0,"top":0,"width":200,"height":200}'
{
"success": true,
"tool": "image-cropper",
"result": "Binary image data — the Content-Type response header names the output format."
}/api/v1/tools/image-rotator2 credits/callImage Rotator
Rotate an image by an arbitrary angle, keeping its original format (animated GIF: first frame only). BMP input is not supported via the API. Send `file` as binary multipart form-data; the example below shows the other fields only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to convert (sent as binary multipart/form-data). |
angle | number | Yes | Rotation angle in degrees, clockwise. |
background | string | No (default "#000000") | Fill color (hex) for the canvas newly exposed by the rotation. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/image-rotator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"angle":90,"background":"#000000"}'
{
"success": true,
"tool": "image-rotator",
"result": "Binary image data — the Content-Type response header names the output format."
}/api/v1/tools/ico-converter2 credits/callICO Converter (Favicon Generator)
Resize an image down to a square favicon size. sharp cannot emit real .ico containers, so this returns a PNG at the chosen size (Content-Type image/png) instead of an ICO file — the legacy UI tool does the same. Send `file` as binary multipart form-data; the example below shows the other fields only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to convert (sent as binary multipart/form-data). |
sizes | string (16 | 32 | 48 | 64) | No (default "32") | Icon size in pixels (square PNG output). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/ico-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"sizes":"32"}'
{
"success": true,
"tool": "ico-converter",
"result": "Binary image data — the Content-Type response header names the output format."
}/api/v1/tools/image-to-base642 credits/callImage to Base64
Encode an image as a base64 string. Send `file` as binary multipart form-data; returns JSON with the encoded data instead of a binary body.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to encode (sent as binary multipart/form-data). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/image-to-base64 \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{}'
{
"success": true,
"tool": "image-to-base64",
"result": {
"base64": "iVBORw0KGgoAAAANSUhEUgAAAAQAAAAE...",
"mimeType": "image/png",
"size": 68
}
}/api/v1/tools/image-watermark2 credits/callImage Watermark Tool
Overlay text on an image as a watermark. Only text watermarks are supported via this API in this batch — image-on-image watermarking remains a UI-only feature for now. Send `file` as binary multipart form-data; the example below shows the other fields only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image to watermark (sent as binary multipart/form-data). |
text | string | Yes | Watermark text to overlay on the image. |
fontSize | number | No (default 48) | Font size in pixels. |
opacity | number | No (default 0.5) | Opacity of the watermark text, from 0 (invisible) to 1 (opaque). |
position | string (center | top-left | top-right | bottom-left | bottom-right) | No (default "bottom-right") | Where to place the watermark on the image. |
color | string | No (default "#ffffff") | Watermark text color (CSS color name or hex code). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/image-watermark \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"text":"Sample Watermark","fontSize":48,"opacity":0.5,"position":"bottom-right","color":"#ffffff"}'
{
"success": true,
"tool": "image-watermark",
"result": "Binary image data — the Content-Type response header names the output format."
}/api/v1/tools/image-metadata-viewer2 credits/callImage Metadata Viewer
Return technical image metadata (format, dimensions, color space, and more) as JSON, from sharp's decoder. Deep EXIF tags (camera make/model, GPS, capture time) are only available in the browser-based Image Metadata Viewer UI tool, not via this API. BMP and HEIC input are not supported here — convert to PNG/JPEG/WEBP/GIF/TIFF first. Send `file` as binary multipart form-data.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to inspect (sent as binary multipart/form-data). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/image-metadata-viewer \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{}'
{
"success": true,
"tool": "image-metadata-viewer",
"result": {
"format": "jpeg",
"width": 800,
"height": 600,
"space": "srgb",
"channels": 3,
"depth": "uchar",
"density": 72,
"hasAlpha": false,
"hasProfile": false
}
}/api/v1/tools/image-format-detector2 credits/callImage Format Detector
Detect an image's true format, dimensions, and MIME type by inspecting its bytes rather than trusting the filename or the Content-Type header. BMP is detected from its header magic bytes without a full pixel decode (sharp has no BMP codec in this build). HEIC is not supported via this API. Send `file` as binary multipart form-data.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image file to inspect (sent as binary multipart/form-data). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/image-format-detector \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{}'
{
"success": true,
"tool": "image-format-detector",
"result": {
"format": "png",
"width": 800,
"height": 600,
"mimeType": "image/png"
}
}/api/v1/tools/bulk-image-renamer2 credits/callBulk Image Renamer
Compute a bulk-rename plan for a list of filenames using a pattern with {n} (zero-padded sequence number), {name} (original name without its extension), and {ext} (original extension without the dot) tokens. This endpoint is JSON-only: no files are uploaded and nothing is renamed server-side — the UI applies the returned `to` names when it builds the renamed zip.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
filenames | string | Yes | Newline-separated list of original filenames. |
pattern | string | Yes | Rename pattern using the {n}, {name}, and {ext} tokens, e.g. "photo-{n}.{ext}". |
start | number | No (default 1) | Starting sequence number substituted for {n}. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/bulk-image-renamer \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"filenames":"IMG_001.jpg\nIMG_002.png","pattern":"photo-{n}.{ext}","start":1}'
{
"success": true,
"tool": "bulk-image-renamer",
"result": {
"renames": [
{
"from": "IMG_001.jpg",
"to": "photo-1.jpg"
},
{
"from": "IMG_002.png",
"to": "photo-2.png"
}
]
}
}Document Tools
/api/v1/tools/pdf-to-docx5 credits/callPDF to DOCX
Convert a PDF to an editable Word .docx document via a headless LibreOffice subprocess, using LibreOffice's Writer PDF-import filter to reflow the PDF into real text (not embedded page images). This runs SERVER-SIDE — the uploaded file is sent to and processed on the server, unlike this site's browser-local client tools. Fidelity depends on the source PDF: a text-based PDF reflows well, a scanned/rasterized PDF will not.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The PDF file to convert (multipart/form-data). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/pdf-to-docx \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{}'
{
"success": true,
"tool": "pdf-to-docx",
"result": "Binary DOCX data (Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document) — filename \"converted.docx\"."
}/api/v1/tools/docx-to-pdf5 credits/callDOCX to PDF
Convert a Word .docx document to PDF via a headless LibreOffice subprocess (`soffice --convert-to pdf`). This runs SERVER-SIDE for true layout fidelity (fonts, tables, images render the same way LibreOffice/Word itself would lay them out) — unlike this site's browser-local client tools, the uploaded file is sent to and processed on the server.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The .docx file to convert (multipart/form-data). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/docx-to-pdf \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{}'
{
"success": true,
"tool": "docx-to-pdf",
"result": "Binary PDF data (Content-Type: application/pdf) — filename \"converted.pdf\"."
}/api/v1/tools/pdf-merge3 credits/callPDF Merge
Merge two or more PDF files into one, preserving page order (files are concatenated in the order they are sent). Each upload is checked for the %PDF- signature before any parsing, and the combined page count is capped at 500. Send the PDFs as repeated `files` fields in multipart form-data; returns the merged PDF as a binary body.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
files | file | Yes | Two or more PDF files to merge, sent as repeated `files` fields (multipart/form-data). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/pdf-merge \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{}'
{
"success": true,
"tool": "pdf-merge",
"result": "Binary PDF data (Content-Type: application/pdf) — the merged document, filename \"merged.pdf\"."
}/api/v1/tools/pdf-split3 credits/callPDF Split
Split a PDF into multiple PDFs, returned as a ZIP archive. With no `ranges`, every page becomes its own 1-page PDF (page-1.pdf, page-2.pdf, …). With `ranges` like "1-3,5,8-10", each comma-separated group becomes one PDF (pages-1-3.pdf, page-5.pdf, …). Ranges are 1-based and validated against the page count; a malformed or backwards range is rejected. The source page count is capped at 500. Returns a ZIP (application/zip).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The PDF file to split (multipart/form-data). |
ranges | string | No | Optional 1-based page ranges, e.g. "1-3,5,8-10". Omit to split every page into its own PDF. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/pdf-split \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"ranges":"1-3,5,8-10"}'
{
"success": true,
"tool": "pdf-split",
"result": "Binary ZIP data (Content-Type: application/zip) containing one PDF per range, filename \"split.zip\"."
}/api/v1/tools/pdf-compress3 credits/callPDF Compress
Re-save a PDF with garbage-collection of unused objects plus stream/image/font recompression (mupdf), returning the optimized PDF. This is a real, structural size reduction, not a lossy "magic" compressor — the gain (if any) depends entirely on the source file; an already-optimized PDF may come back the same size or, rarely, slightly larger. The response carries `x-original-size` and `x-compressed-size` headers (in bytes) alongside the binary body so a caller can see the actual before/after sizes rather than a claimed one.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The PDF file to compress (multipart/form-data). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/pdf-compress \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{}'
{
"success": true,
"tool": "pdf-compress",
"result": "Binary PDF data (Content-Type: application/pdf) — filename \"compressed.pdf\", with x-original-size / x-compressed-size response headers (bytes)."
}/api/v1/tools/pdf-to-text3 credits/callPDF to Text
Extract text from a PDF via pdfjs-dist's Node "legacy" build. Omit `page` to concatenate every page's text (pages joined by a blank line); pass a 1-based `page` to extract just that one page. The document is bounded to 500 pages. Returns JSON, not a binary body.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The PDF file to extract text from (multipart/form-data). |
page | number | No | Optional 1-based page number to extract. Omit to extract every page. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/pdf-to-text \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{}'
{
"success": true,
"tool": "pdf-to-text",
"result": {
"text": "Hello, world.",
"pages": 1,
"characters": 13
}
}/api/v1/tools/csv-to-json1 credit/callCSV to JSON
Parse CSV text into JSON per RFC 4180: quoted fields may contain the delimiter, raw newlines, and `""` as an escaped `"`. With `header:true` (default) the first row becomes object keys and short/long rows are padded/truncated to the header's column count; with `header:false` each row is returned as a plain array.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
csv | string | Yes | The CSV text to parse. |
delimiter | string | No (default ",") | Single-character field delimiter. |
header | boolean | No (default true) | Treat the first row as column names and return an array of objects (false returns arrays). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/csv-to-json \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"csv":"name,age\nAlice,30\nBob,25"}'
{
"success": true,
"tool": "csv-to-json",
"result": {
"rows": [
{
"name": "Alice",
"age": "30"
},
{
"name": "Bob",
"age": "25"
}
],
"count": 2
}
}/api/v1/tools/json-to-csv1 credit/callJSON to CSV
Convert a JSON array (of objects, or of arrays) into CSV text. For an array of objects, the column set is the union of every object's keys in first-seen order, and a header row is emitted; missing cells become empty. A field containing the delimiter, a `"`, or a newline is wrapped in quotes with internal `"` doubled.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
json | string | Yes | A JSON array of objects, or a JSON array of arrays, as a string. |
delimiter | string | No (default ",") | Single-character field delimiter. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/json-to-csv \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"json":"[{\"a\":1,\"b\":2},{\"a\":3,\"b\":4}]"}'
{
"success": true,
"tool": "json-to-csv",
"result": {
"csv": "a,b\n1,2\n3,4"
}
}/api/v1/tools/xml-to-json1 credit/callXML to JSON
Parse XML into JSON via fast-xml-parser (attributes are kept, prefixed "@_"). fast-xml-parser has no DOCTYPE/external-entity resolution at all, so there is no XXE or "billion laughs" entity-expansion vector; input is still bounded to 5MB to cap plain parse work. Malformed XML (e.g. a mismatched closing tag) is validated up front and rejected before parsing.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
xml | string | Yes | The XML document to parse. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/xml-to-json \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"xml":"<root a=\"1\"><b>x</b></root>"}'
{
"success": true,
"tool": "xml-to-json",
"result": {
"json": {
"root": {
"@_a": "1",
"b": "x"
}
}
}
}/api/v1/tools/yaml-to-json1 credit/callYAML to JSON
Parse YAML into JSON via js-yaml's `load()`, which uses only the safe default schema — it does not recognize (and will not execute) unsafe tags like `!!js/function`. Invalid YAML throws a clear error.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
yaml | string | Yes | The YAML document to parse. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/yaml-to-json \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"yaml":"a: 1\nb:\n - x\n - y"}'
{
"success": true,
"tool": "yaml-to-json",
"result": {
"json": {
"a": 1,
"b": [
"x",
"y"
]
}
}
}/api/v1/tools/json-to-yaml1 credit/callJSON to YAML
Convert a JSON value into a YAML document via js-yaml's `dump()`.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
json | string | Yes | A JSON value, as a string, to convert to YAML. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/json-to-yaml \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"json":"{\"a\":1}"}'
{
"success": true,
"tool": "json-to-yaml",
"result": {
"yaml": "a: 1\n"
}
}/api/v1/tools/excel-to-csv3 credits/callExcel to CSV
Convert one sheet of an Excel workbook (.xlsx or legacy .xls) to CSV, via SheetJS (`xlsx`) — pure JS, runs entirely in this process, no LibreOffice involved. Pass `sheet` as a sheet name, or a 0-based numeric index, to pick a sheet other than the first; the response always lists every sheet name so a caller can target a different one. A sheet with more than 500,000 cells is rejected rather than converted.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The .xlsx or .xls workbook to convert (multipart/form-data). |
sheet | string | No | A sheet name, or a 0-based numeric index. Omit to use the first sheet. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/excel-to-csv \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{}'
{
"success": true,
"tool": "excel-to-csv",
"result": {
"csv": "a,b\n1,2\n3,4",
"sheet": "Sheet1",
"sheets": [
"Sheet1"
]
}
}/api/v1/tools/text-to-pdf3 credits/callText to PDF
Render plain text into a paginated PDF using Helvetica, word-wrapping to the page width and preserving explicit newlines. Font size and margin are configurable. The produced document is bounded to 500 pages — text that would exceed this is rejected. Returns the PDF as a binary body.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
text | string | Yes | The plain text to render. |
fontSize | number | No (default 11) | Font size in points. |
margin | number | No (default 50) | Page margin in points. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/text-to-pdf \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"text":"Hello, world.\nThis is a PDF generated from text.","fontSize":11,"margin":50}'
{
"success": true,
"tool": "text-to-pdf",
"result": "Binary PDF data (Content-Type: application/pdf) — the rendered document, filename \"document.pdf\"."
}/api/v1/tools/html-to-pdf5 credits/callHTML to PDF
Render an HTML string to PDF via headless Chrome (`page.pdf()`). This runs SERVER-SIDE — the HTML is sent to and rendered on the server, unlike this site's browser-local client tools. For safety, JavaScript execution is disabled and every request the page would make other than a `data:` URL (http/https/file/ftp, including internal hosts and cloud-metadata endpoints) is blocked outright, so external stylesheets, fonts, and images will not load — inline everything (e.g. `data:` URIs) that must appear in the output.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
html | string | Yes | The HTML document (or fragment) to render. |
format | string (A4 | Letter) | No (default "A4") | Page size. |
landscape | boolean | No (default false) | Render in landscape orientation instead of portrait. |
marginPx | number | No (default 0) | Page margin (all sides) in pixels. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/html-to-pdf \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"html":"<h1>Hello</h1><p>Rendered to PDF.</p>"}'
{
"success": true,
"tool": "html-to-pdf",
"result": "Binary PDF data (Content-Type: application/pdf) — filename \"document.pdf\"."
}/api/v1/tools/pdf-to-jpg3 credits/callPDF to JPG
Rasterize a PDF to JPEG or PNG images via mupdf. Pass a 1-based `page` to render just that one page (returns a single image); omit it to render every page (returns a ZIP of page-1.jpg, page-2.jpg, …). `dpi` is capped at 300 no matter what value is sent. The document is bounded to 500 pages.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The PDF file to rasterize (multipart/form-data). |
page | number | No | Optional 1-based page number to render. Omit to render every page, returned as a ZIP. |
dpi | number | No (default 150) | Rendering resolution in dots per inch. Capped at 300 regardless of the value sent. |
format | string (jpeg | png) | No (default "jpeg") | Output image format. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/pdf-to-jpg \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"dpi":150,"format":"jpeg"}'
{
"success": true,
"tool": "pdf-to-jpg",
"result": "A single page: binary image data (Content-Type image/jpeg or image/png), filename \"page-{n}.jpg\". Every page (no `page` given): a ZIP archive (Content-Type application/zip), filename \"pages.zip\"."
}/api/v1/tools/jpg-to-pdf3 credits/callJPG to PDF
Combine one or more JPEG/PNG images into a single PDF, one image per page. Each upload is checked for a PNG or JPEG signature before embedding. With `pageSize:"fit"` (default) each page is exactly the image size; "a4"/"letter" place the image, scaled to fit within an optional margin, on a fixed-size page in the chosen orientation. The image count is capped at 500. Send the images as repeated `files` fields; returns a binary PDF.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
files | file | Yes | One or more JPEG/PNG images, sent as repeated `files` fields (multipart/form-data). |
pageSize | string (fit | a4 | letter) | No (default "fit") | Page size: "fit" (page matches each image), "a4", or "letter". |
orientation | string (portrait | landscape) | No (default "portrait") | Page orientation for "a4"/"letter" (ignored for "fit"). |
margin | number | No (default 0) | Margin in points around the image for "a4"/"letter" (ignored for "fit"). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/jpg-to-pdf \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"pageSize":"fit","orientation":"portrait","margin":0}'
{
"success": true,
"tool": "jpg-to-pdf",
"result": "Binary PDF data (Content-Type: application/pdf) — one image per page, filename \"images.pdf\"."
}/api/v1/tools/pdf-page-rotator3 credits/callPDF Page Rotator
Rotate pages of a PDF by 90, 180, or 270 degrees (clockwise). By default every page is rotated; pass `pages` as a 1-based range (e.g. "1-3,5") to rotate only some. The rotation is added to each page's existing rotation. The page count is capped at 500. Returns the rotated PDF as a binary body.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The PDF file to rotate (multipart/form-data). |
angle | string (90 | 180 | 270) | Yes | Rotation to add, in degrees clockwise. |
pages | string | No | Optional 1-based pages/ranges to rotate, e.g. "1-3,5". Omit to rotate every page. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/pdf-page-rotator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"angle":"90","pages":"1-3,5"}'
{
"success": true,
"tool": "pdf-page-rotator",
"result": "Binary PDF data (Content-Type: application/pdf) — the rotated document, filename \"rotated.pdf\"."
}/api/v1/tools/pdf-watermark3 credits/callPDF Watermark
Stamp a diagonal text watermark across every page of a PDF, drawn as embedded Helvetica-Bold text (this is a text watermark, not HTML). Options control opacity, font size, hex color, and rotation angle. The page count is capped at 500. Returns the watermarked PDF as a binary body.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The PDF file to watermark (multipart/form-data). |
text | string | Yes | Watermark text (drawn literally, not interpreted as HTML). |
opacity | number | No (default 0.3) | Watermark opacity, from 0 (invisible) to 1 (opaque). |
fontSize | number | No (default 50) | Font size in points. |
color | string | No (default "#808080") | Text color as a hex code (e.g. "#808080"). |
angle | number | No (default 45) | Rotation of the watermark in degrees. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/pdf-watermark \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"text":"CONFIDENTIAL","opacity":0.3,"fontSize":50,"color":"#808080","angle":45}'
{
"success": true,
"tool": "pdf-watermark",
"result": "Binary PDF data (Content-Type: application/pdf) — the watermarked document, filename \"watermarked.pdf\"."
}/api/v1/tools/pdf-password-protect3 credits/callPDF Password Protect / Unlock
Add or remove password protection on a PDF via mupdf (AES-256). `mode:"protect"` encrypts it, requiring `password` to open it afterward (`ownerPassword`, if given, separately controls edit/print permissions; it defaults to the same value as `password`). `mode:"unlock"` removes protection given the PDF's correct current password — a wrong or missing password throws a 400, never a corrupted or still-locked file. HONESTY NOTE: this tool runs SERVER-SIDE for both the website and this API — there is no browser-local version. The file and password are sent to the server to perform the operation and are discarded immediately afterward; neither is ever logged or persisted.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The PDF file to protect or unlock (multipart/form-data). |
mode | string (protect | unlock) | Yes | "protect" to add password protection, "unlock" to remove it. |
password | string | Yes | For "protect": the new password required to open the PDF. For "unlock": the PDF's current password. |
ownerPassword | string | No | "protect" only: a separate owner/permissions password. Defaults to the same value as `password`. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/pdf-password-protect \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"mode":"protect","password":"correct horse battery staple"}'
{
"success": true,
"tool": "pdf-password-protect",
"result": "Binary PDF data (Content-Type: application/pdf) — filename \"protected.pdf\" (\"unlock\" mode: \"unlocked.pdf\")."
}/api/v1/tools/markdown-to-pdf3 credits/callMarkdown to PDF
Render Markdown to PDF: parsed to HTML via `marked`, wrapped in a minimal readable-typography stylesheet, then rendered via headless Chrome exactly like html-to-pdf (same server-side execution, same JavaScript-off and non-`data:`-request-blocking hardening — see that tool's notes). Runs SERVER-SIDE, unlike this site's browser-local client tools.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
markdown | string | Yes | The Markdown text to render. |
format | string (A4 | Letter) | No (default "A4") | Page size. |
landscape | boolean | No (default false) | Render in landscape orientation instead of portrait. |
marginPx | number | No (default 0) | Page margin (all sides) in pixels. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/markdown-to-pdf \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"markdown":"# Hello\n\nRendered to **PDF**."}'
{
"success": true,
"tool": "markdown-to-pdf",
"result": "Binary PDF data (Content-Type: application/pdf) — filename \"document.pdf\"."
}Text Tools
/api/v1/tools/word-counter1 credit/callWord Counter
Count words, characters, sentences, paragraphs, and estimate reading time.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
text | string | Yes | The text to analyze. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/word-counter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"text":"Hello world. This is a test."}'
{
"success": true,
"tool": "word-counter",
"result": {
"words": 6,
"characters": 28,
"charactersNoSpaces": 23,
"sentences": 2,
"paragraphs": 1,
"readingTimeMinutes": 1
}
}/api/v1/tools/text-case-converter1 credit/callText Case Converter
Convert text between upper, lower, title, sentence, camel, pascal, snake, and kebab case.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
text | string | Yes | The text to convert. |
case | string (upper | lower | title | sentence | camel | pascal | snake | kebab) | Yes | Target case. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/text-case-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"text":"hello world","case":"title"}'
{
"success": true,
"tool": "text-case-converter",
"result": {
"result": "Hello World",
"case": "title"
}
}/api/v1/tools/lorem-ipsum-generator1 credit/callLorem Ipsum Generator
Generate placeholder Lorem Ipsum text as paragraphs, sentences, or words.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
count | number | No (default 3) | How many units (paragraphs/sentences/words) to generate. |
unit | string (paragraphs | sentences | words) | No (default "paragraphs") | The unit `count` refers to. |
startWithLorem | boolean | No (default true) | Start with the classic "Lorem ipsum dolor sit amet..." opening. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/lorem-ipsum-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"count":1,"unit":"sentences","startWithLorem":true}'
{
"success": true,
"tool": "lorem-ipsum-generator",
"result": {
"result": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
}
}/api/v1/tools/slug-generator1 credit/callSlug Generator
Convert text to a URL-friendly slug: lowercased, accents stripped, non-alphanumeric characters removed, words joined with single hyphens.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text to process. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/slug-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"Hello, World! Café"}'
{
"success": true,
"tool": "slug-generator",
"result": {
"slug": "hello-world-cafe"
}
}/api/v1/tools/text-diff-checker1 credit/callText Diff Checker
Compute a diff between two pieces of text, by line or by word, using an LCS-based algorithm bounded to 5000 combined lines/words across both inputs (same bound as the developer code-diff-tool).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
textA | string | Yes | The "before" text. |
textB | string | Yes | The "after" text. |
mode | string (lines | words) | No (default "lines") | Diff granularity. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/text-diff-checker \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"textA":"a\nb","textB":"a\nb\nc","mode":"lines"}'
{
"success": true,
"tool": "text-diff-checker",
"result": {
"diff": [
{
"type": "same",
"value": "a"
},
{
"type": "same",
"value": "b"
},
{
"type": "add",
"value": "c"
}
],
"additions": 1,
"deletions": 0
}
}/api/v1/tools/extract-emails1 credit/callExtract Emails
Extract all email addresses found in text.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text to process. |
unique | boolean | No (default true) | Remove duplicate matches. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/extract-emails \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"Contact a@example.com or b@example.com, or a@example.com again.","unique":true}'
{
"success": true,
"tool": "extract-emails",
"result": {
"results": [
"a@example.com",
"b@example.com"
],
"count": 2
}
}/api/v1/tools/extract-urls1 credit/callExtract URLs
Extract all http(s) URLs found in text.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text to process. |
unique | boolean | No (default true) | Remove duplicate matches. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/extract-urls \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"Visit https://example.com or https://example.com/about.","unique":true}'
{
"success": true,
"tool": "extract-urls",
"result": {
"results": [
"https://example.com",
"https://example.com/about"
],
"count": 2
}
}/api/v1/tools/find-and-replace1 credit/callFind and Replace
Find and replace text using literal string matching — `find` is matched exactly, not as a regular expression. Both `find` and `replace` are capped at 10,000 characters and `input` at 100,000. Regex-mode find/replace is available in the browser Find and Replace tool, which runs client-side in the requesting browser rather than on the API server; this API endpoint does not accept a `regex` option.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text to search. |
find | string | Yes | Literal text to find (matched exactly — not interpreted as a regular expression). |
replace | string | No (default "") | Replacement text (used verbatim — regex backreferences like $1 are not supported). |
caseSensitive | boolean | No (default true) | Case-sensitive matching. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/find-and-replace \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"The cat sat on the mat","find":"at","replace":"og","caseSensitive":true}'
{
"success": true,
"tool": "find-and-replace",
"result": {
"result": "The cog sog on the mog",
"count": 3
}
}/api/v1/tools/reading-time-estimator1 credit/callReading Time Estimator
Estimate how long it takes to read a piece of text at a given words-per-minute pace.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text to process. |
wpm | number | No (default 200) | Reading speed in words per minute. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/reading-time-estimator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word","wpm":200}'
{
"success": true,
"tool": "reading-time-estimator",
"result": {
"words": 200,
"minutes": 1,
"seconds": 0,
"text": "~1 min"
}
}/api/v1/tools/duplicate-line-remover1 credit/callDuplicate Line Remover
Remove duplicate lines from text, keeping the first occurrence of each.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text to process. |
caseSensitive | boolean | No (default true) | Whether "Line" and "line" are treated as different lines. |
trimLines | boolean | No (default false) | Trim each line before comparing (and keep the trimmed version in the output). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/duplicate-line-remover \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"a\nA\na\nb","caseSensitive":true,"trimLines":false}'
{
"success": true,
"tool": "duplicate-line-remover",
"result": {
"result": "a\nA\nb",
"removed": 1
}
}/api/v1/tools/sort-lines1 credit/callSort Lines
Sort the lines of text alphabetically (ascending/descending), by length, or into a random order.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text to process. |
order | string (asc | desc | length | random) | No (default "asc") | Sort order. |
caseSensitive | boolean | No (default true) | Whether alphabetical sorting treats uppercase/lowercase as different (ignored for "length"/"random"). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/sort-lines \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"banana\napple\ncherry","order":"asc","caseSensitive":true}'
{
"success": true,
"tool": "sort-lines",
"result": {
"result": "apple\nbanana\ncherry"
}
}/api/v1/tools/text-to-binary1 credit/callText to Binary
Convert text to space-separated 8-bit binary (UTF-8 byte-based, so multi-byte characters round-trip correctly) or decode space/newline-separated 8-bit binary groups back to text.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | Text to convert, or binary groups to decode (depending on direction). |
direction | string (to-binary | from-binary) | Yes | Conversion direction. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/text-to-binary \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"Hi","direction":"to-binary"}'
{
"success": true,
"tool": "text-to-binary",
"result": {
"result": "01001000 01101001"
}
}/api/v1/tools/text-reverser1 credit/callText Reverser
Reverse text by characters (code-point safe, so emoji/astral characters are not corrupted), by word order, or by line order.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text to process. |
mode | string (characters | words | lines) | No (default "characters") | What unit to reverse. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/text-reverser \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"Hello world","mode":"characters"}'
{
"success": true,
"tool": "text-reverser",
"result": {
"result": "dlrow olleH"
}
}/api/v1/tools/text-repeater1 credit/callText Repeater
Repeat a string a given number of times, joined by an optional separator. Output size is capped at 1,000,000 characters.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text to repeat. |
count | number | Yes | How many times to repeat the input. |
separator | string | No (default "") | String inserted between repetitions. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/text-repeater \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"ab","count":3,"separator":"-"}'
{
"success": true,
"tool": "text-repeater",
"result": {
"result": "ab-ab-ab"
}
}/api/v1/tools/text-trimmer1 credit/callText Trimmer
Trim whitespace from text. "lines" (default) trims each line individually and keeps blank lines; "all" also collapses repeated internal whitespace and drops blank lines; "leading"/"trailing" trim only one side of the whole text as a single block.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text to process. |
mode | string (lines | all | leading | trailing) | No (default "lines") | Trimming strategy. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/text-trimmer \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":" hello \n world ","mode":"lines"}'
{
"success": true,
"tool": "text-trimmer",
"result": {
"result": "hello\nworld"
}
}/api/v1/tools/character-counter1 credit/callCharacter Counter
Break text down by character type: total characters, characters excluding whitespace, letters, digits, punctuation, and UTF-8 byte length. Distinct from word-counter, which reports words/sentences/paragraphs/reading time.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text to process. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/character-counter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"Hi 42, world!"}'
{
"success": true,
"tool": "character-counter",
"result": {
"characters": 13,
"charactersNoSpaces": 11,
"letters": 7,
"digits": 2,
"punctuation": 2,
"bytes": 13
}
}/api/v1/tools/text-encryption1 credit/callText Encryption/Decryption
Apply a classical cipher (caesar, rot13, atbash, base64, or reverse) to text. These are classical ciphers for learning/obfuscation, NOT secure encryption — do not use this to protect real secrets.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text to process. |
method | string (caesar | rot13 | atbash | base64 | reverse) | Yes | Which cipher to apply. |
shift | number | No (default 3) | Shift amount for the caesar cipher only (ignored by other methods). |
mode | string (encrypt | decrypt) | No (default "encrypt") | Encrypt or decrypt. Ignored by rot13/atbash/reverse, which are their own inverse. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/text-encryption \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"Hello, World!","method":"caesar","shift":3,"mode":"encrypt"}'
{
"success": true,
"tool": "text-encryption",
"result": {
"result": "Khoor, Zruog!"
}
}/api/v1/tools/whitespace-visualizer1 credit/callWhitespace Visualizer
Make whitespace visible: spaces become "·", tabs become "→", and each line ending is marked with "¶".
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text to process. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/whitespace-visualizer \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"a b\tc"}'
{
"success": true,
"tool": "whitespace-visualizer",
"result": {
"result": "a·b→c"
}
}/api/v1/tools/string-escape-unescape1 credit/callString Escape/Unescape
Escape or unescape text for embedding in JSON, HTML, a URL, or JavaScript source.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text to process. |
format | string (json | html | url | js) | Yes | Target escaping format. |
mode | string (escape | unescape) | Yes | Whether to escape raw text or unescape previously-escaped text. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/string-escape-unescape \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"<b>hi</b>","format":"html","mode":"escape"}'
{
"success": true,
"tool": "string-escape-unescape",
"result": {
"result": "<b>hi</b>"
}
}/api/v1/tools/random-text-generator1 credit/callRandom Text Generator
Generate cryptographically random text using node:crypto, for tokens/placeholders/test data.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
length | number | Yes | Number of characters to generate. |
charset | string (alphanumeric | alpha | numeric | hex | symbols) | No (default "alphanumeric") | Which characters to draw from. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/random-text-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"length":16,"charset":"alphanumeric"}'
{
"success": true,
"tool": "random-text-generator",
"result": {
"result": "aZ3kQ9mP1xL7vB2c"
}
}/api/v1/tools/text-column-formatter1 credit/callText Column Formatter
Align delimited text (e.g. CSV-like rows) into padded columns for readability. Formatted output size is capped at 1,000,000 characters.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text to process. |
delimiter | string | No (default ",") | The delimiter separating columns on each line. |
align | string (left | right) | No (default "left") | Column alignment. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/text-column-formatter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"name,age\nAlice,30\nBob,7","delimiter":",","align":"left"}'
{
"success": true,
"tool": "text-column-formatter",
"result": {
"result": "name , age\nAlice, 30\nBob , 7"
}
}/api/v1/tools/invisible-character-detector1 credit/callInvisible Character Detector
Detect zero-width and other invisible/formatting Unicode characters in text, and return a cleaned copy with them stripped.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text to process. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/invisible-character-detector \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"ab"}'
{
"success": true,
"tool": "invisible-character-detector",
"result": {
"found": [
{
"char": "",
"name": "ZERO WIDTH SPACE",
"position": 1,
"codePoint": 8203
}
],
"count": 1,
"cleaned": "ab"
}
}Developer Tools
/api/v1/tools/json-formatter1 credit/callJSON Formatter / Beautifier
Parse and re-serialize JSON with a configurable indent width.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text/code to process. |
indent | number | No (default 2) | Number of spaces per indent level. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/json-formatter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"{\"a\":1,\"b\":[2,3]}","indent":2}'
{
"success": true,
"tool": "json-formatter",
"result": {
"result": "{\n \"a\": 1,\n \"b\": [\n 2,\n 3\n ]\n}"
}
}/api/v1/tools/json-validator1 credit/callJSON Validator
Check whether a string is valid JSON. This never fails the request for invalid JSON — `valid: false` with a parser error message is the expected response for malformed input.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text/code to process. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/json-validator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"{\"a\":1}"}'
{
"success": true,
"tool": "json-validator",
"result": {
"valid": true,
"error": null
}
}/api/v1/tools/json-minifier1 credit/callJSON Minifier
Parse JSON and re-serialize it with all insignificant whitespace removed.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text/code to process. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/json-minifier \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"{\n \"a\": 1,\n \"b\": [2, 3]\n}"}'
{
"success": true,
"tool": "json-minifier",
"result": {
"result": "{\"a\":1,\"b\":[2,3]}"
}
}/api/v1/tools/uuid-generator1 credit/callUUID Generator
Generate one or more version-4 (random) UUIDs.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
count | number | No (default 1) | How many UUIDs to generate. |
version | string (v4) | No (default "v4") | UUID version to generate. Only v4 (random) is currently supported. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/uuid-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"count":3,"version":"v4"}'
{
"success": true,
"tool": "uuid-generator",
"result": {
"uuids": [
"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"e3f1c2a0-5e4b-4c7a-9a1f-6d8b2e0f1a2b",
"2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
]
}
}/api/v1/tools/jwt-decoder1 credit/callJWT Decoder
Decode a JWT’s header and payload segments without verifying its signature. This tool DOES NOT verify the signature, check expiry, or validate the signing key in any way — it only base64url-decodes the header and payload JSON.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
token | string | Yes | The JWT to decode, as header.payload.signature. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/jwt-decoder \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dummysignature"}'
{
"success": true,
"tool": "jwt-decoder",
"result": {
"header": {
"alg": "HS256"
},
"payload": {
"sub": "1234567890"
},
"signaturePresent": true
}
}/api/v1/tools/css-minifier1 credit/callCSS Minifier
Strip comments and insignificant whitespace from CSS.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text/code to process. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/css-minifier \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"body {\n color: red;\n}"}'
{
"success": true,
"tool": "css-minifier",
"result": {
"result": "body{color:red}"
}
}/api/v1/tools/html-formatter1 credit/callHTML Formatter
Re-indent HTML by breaking tags onto their own lines (regex-based, not a real HTML parser).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text/code to process. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/html-formatter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"<div><p>Hi</p></div>"}'
{
"success": true,
"tool": "html-formatter",
"result": {
"result": "<div><p>Hi\n</p>\n</div>"
}
}/api/v1/tools/sql-formatter1 credit/callSQL Formatter
Re-indent a SQL query by placing common keywords on new lines (keyword-based, not a real SQL parser).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text/code to process. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/sql-formatter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"select * from users where id = 1"}'
{
"success": true,
"tool": "sql-formatter",
"result": {
"result": "SELECT *\nFROM users\nWHERE id = 1"
}
}/api/v1/tools/base64-encode-decode1 credit/callBase64 Encode/Decode
Encode UTF-8 text to Base64 or decode a Base64 string back to UTF-8 text. For encoding binary files, use image-to-base64 instead.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text/code to process. |
mode | string (encode | decode) | Yes | Direction of the conversion. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/base64-encode-decode \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"hello","mode":"encode"}'
{
"success": true,
"tool": "base64-encode-decode",
"result": {
"result": "aGVsbG8="
}
}/api/v1/tools/url-encode-decode1 credit/callURL Encode/Decode
Percent-encode or percent-decode a string for use in a URL.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text/code to process. |
mode | string (encode | decode) | Yes | Direction of the conversion. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/url-encode-decode \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"hello world/?","mode":"encode"}'
{
"success": true,
"tool": "url-encode-decode",
"result": {
"result": "hello%20world%2F%3F"
}
}/api/v1/tools/unix-timestamp-converter1 credit/callUnix Timestamp Converter
Convert between Unix timestamps (seconds or milliseconds) and human-readable dates.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | string | Yes | For direction="to-date": an integer number of seconds or milliseconds since the epoch. For direction="to-timestamp": any date string parseable by Date.parse. |
direction | string (to-date | to-timestamp) | Yes | Conversion direction. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/unix-timestamp-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":"1700000000","direction":"to-date"}'
{
"success": true,
"tool": "unix-timestamp-converter",
"result": {
"iso": "2023-11-14T22:13:20.000Z",
"utc": "Tue, 14 Nov 2023 22:13:20 GMT",
"unix": 1700000000
}
}/api/v1/tools/cron-expression-explainer1 credit/callCron Expression Explainer
Parse a standard 5-field cron expression (minute hour day-of-month month day-of-week) into a human-readable description, plus the common @yearly/@annually/@monthly/@weekly/@daily/@midnight/@hourly aliases. 6- and 7-field expressions (seconds/year) are not supported.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
expression | string | Yes | A 5-field cron expression or one of the supported @aliases. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/cron-expression-explainer \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"expression":"0 9 * * 1-5"}'
{
"success": true,
"tool": "cron-expression-explainer",
"result": {
"description": "At 09:00, Monday through Friday.",
"fields": {
"minute": "at minute 0",
"hour": "at hour 9",
"dayOfMonth": "every day of the month",
"month": "every month",
"dayOfWeek": "Monday through Friday"
}
}
}/api/v1/tools/javascript-minifier1 credit/callJavaScript Minifier
Strip comments and insignificant whitespace from JavaScript using regex-based rules (not a real parser — template literals and regex literals containing `//` or braces are not specially handled).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text/code to process. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/javascript-minifier \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"function add(a, b) {\n return a + b;\n}"}'
{
"success": true,
"tool": "javascript-minifier",
"result": {
"result": "function add(a,b){return a+b;}"
}
}/api/v1/tools/html-entity-encoder1 credit/callHTML Entity Encoder
Encode special characters as HTML entities, or decode HTML entities back to characters. Decoding only resolves character entities (numeric and a common named set) — it does not parse or execute HTML.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text/code to process. |
mode | string (encode | decode) | No (default "encode") | Direction of the conversion. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/html-entity-encoder \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"<a href=\"x\">A & B</a>"}'
{
"success": true,
"tool": "html-entity-encoder",
"result": {
"result": "<a href="x">A & B</a>"
}
}/api/v1/tools/markdown-to-html1 credit/callMarkdown to HTML
Render Markdown to HTML using the site’s basic Markdown subset (headers, bold/italic, links, images, lists, blockquotes, code blocks/inline code, horizontal rules, paragraphs) — not a full CommonMark implementation.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
markdown | string | Yes | The Markdown source to render. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/markdown-to-html \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"markdown":"# Hello\n\nThis is **bold** text."}'
{
"success": true,
"tool": "markdown-to-html",
"result": {
"html": "<h2 style=\"margin-top: 2rem; margin-bottom: 1rem;\">Hello</h2><p style=\"margin-bottom: 1rem;\">This is <strong>bold</strong> text.</p>"
}
}/api/v1/tools/code-diff-tool1 credit/callCode Diff Tool
Compute a line-by-line diff between two text/code snippets using an LCS-based algorithm, bounded to 5000 combined lines across both inputs.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
textA | string | Yes | The "before" text. |
textB | string | Yes | The "after" text. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/code-diff-tool \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"textA":"line1\nline2","textB":"line1\nline2\nline3"}'
{
"success": true,
"tool": "code-diff-tool",
"result": {
"diff": [
{
"type": "same",
"line": "line1"
},
{
"type": "same",
"line": "line2"
},
{
"type": "add",
"line": "line3"
}
],
"additions": 1,
"deletions": 0
}
}/api/v1/tools/json-to-typescript1 credit/callJSON to TypeScript Interface Generator
Generate a TypeScript interface (or a type alias for array/primitive roots) from a JSON value, producing union types for mixed-primitive arrays and inline nested object types.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The JSON value to convert. |
rootName | string | No (default "Root") | Name for the generated root interface/type. Must be a valid identifier. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/json-to-typescript \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"{\"id\":1,\"name\":\"Widget\"}","rootName":"Root"}'
{
"success": true,
"tool": "json-to-typescript",
"result": {
"typescript": "interface Root {\n id: number;\n name: string;\n}"
}
}/api/v1/tools/json-path-finder1 credit/callJSON Path Finder
Parse JSON and list the JSONPath expression for every leaf value (and every empty object/array).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text/code to process. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/json-path-finder \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"{\"a\":1,\"b\":[2,3]}"}'
{
"success": true,
"tool": "json-path-finder",
"result": {
"paths": [
"$.a",
"$.b[0]",
"$.b[1]"
]
}
}/api/v1/tools/css-gradient-generator1 credit/callCSS Gradient Generator
Generate a CSS linear-gradient() or radial-gradient() value from 2-10 hex colors.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
type | string (linear | radial) | No (default "linear") | Gradient type. |
angle | number | No (default 90) | Angle in degrees (linear gradients only; ignored for radial). |
colors | string | Yes | Comma-separated hex colors, e.g. "#ff0000,#0000ff" (2-10 colors, each #rgb or #rrggbb). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/css-gradient-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"type":"linear","angle":90,"colors":"#ff0000,#0000ff"}'
{
"success": true,
"tool": "css-gradient-generator",
"result": {
"css": "linear-gradient(90deg, #ff0000, #0000ff)"
}
}/api/v1/tools/svg-optimizer1 credit/callSVG Optimizer
Strip comments, redundant whitespace, xmlns: namespaces, data- attributes, and id attributes from an SVG document (regex-based, not a full XML optimizer).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | The text/code to process. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/svg-optimizer \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"<svg xmlns=\"http://www.w3.org/2000/svg\">\n <rect id=\"a\" width=\"10\" height=\"10\" />\n</svg>"}'
{
"success": true,
"tool": "svg-optimizer",
"result": {
"result": "<svg xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"10\" height=\"10\"/></svg>"
}
}/api/v1/tools/htaccess-generator1 credit/call.htaccess Generator
Generate a fixed best-practices .htaccess template (HTTPS redirect, trailing-slash removal, custom error pages, gzip compression, and cache headers). The output does not vary by input.
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/htaccess-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{}'
{
"success": true,
"tool": "htaccess-generator",
"result": {
"result": "# .htaccess Generated by FreeConvertingTools\n\n# Enable Rewrite Engine\nRewriteEngine On\n\n# Force HTTPS\nRewriteCond %{HTTPS} off\nRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]\n\n# Remove trailing slash\nRewriteCond %{REQUEST_FILENAME} !-d\nRewriteRule ^(.*)/$ /$1 [L,R=301]\n\n# Custom error pages\nErrorDocument 404 /404.html\nErrorDocument 500 /500.html\n\n# Enable compression\n<IfModule mod_deflate.c>\n AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript application/json\n</IfModule>\n\n# Cache control\n<IfModule mod_expires.c>\n ExpiresActive On\n ExpiresByType image/jpg \"access plus 1 year\"\n ExpiresByType image/png \"access plus 1 year\"\n ExpiresByType text/css \"access plus 1 month\"\n ExpiresByType application/javascript \"access plus 1 month\"\n</IfModule>\n"
}
}/api/v1/tools/robots-txt-generator1 credit/callRobots.txt Generator
Generate a robots.txt with a sensible default allow/disallow policy and a Sitemap line for the given domain.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | No (default "https://example.com") | Base URL referenced in the Sitemap line and header comment. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/robots-txt-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"domain":"https://example.com"}'
{
"success": true,
"tool": "robots-txt-generator",
"result": {
"result": "# robots.txt Generated by FreeConvertingTools\n# https://example.com\n\nUser-agent: *\nAllow: /\n\n# Disallow admin and private paths\nDisallow: /admin/\nDisallow: /api/\nDisallow: /dashboard/\nDisallow: /account/\n\n# Allow search engines to index tool pages\nAllow: /tools/\nAllow: /categories/\nAllow: /blog/\n\n# Sitemap\nSitemap: https://example.com/sitemap.xml\n\n# Crawl delay (in seconds)\nCrawl-delay: 1\n"
}
}/api/v1/tools/sitemap-xml-generator1 credit/callSitemap XML Generator
Generate a sitemap.xml document from a newline-separated list of absolute http/https URLs (up to 1000).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
urls | string | Yes | Newline-separated absolute http/https URLs to include in the sitemap. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/sitemap-xml-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"urls":"https://example.com\nhttps://example.com/about"}'
{
"success": true,
"tool": "sitemap-xml-generator",
"result": {
"result": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset ...>...</urlset>"
}
}Generators
/api/v1/tools/qr-code-generator1 credit/callQR Code Generator
Generate a QR code as an <svg> string via the qrcode npm package (never a deprecated third-party image API).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Text/URL to encode. |
size | number | No (default 256) | Output width/height in pixels. |
ecc | string (L | M | Q | H) | No (default "M") | Error correction level (higher = more redundancy, less data capacity). |
fgColor | string | No (default "000000") | Foreground (dark module) color as a hex code. |
bgColor | string | No (default "ffffff") | Background (light module) color as a hex code. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/qr-code-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"data":"https://example.com","size":256,"ecc":"M"}'
{
"success": true,
"tool": "qr-code-generator",
"result": {
"svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"256\" height=\"256\" viewBox=\"0 0 33 33\" shape-rendering=\"crispEdges\"><path fill=\"#ffffff\" d=\"M0 0h33v33H0z\"/><path stroke=\"#000000\" d=\"M4 4.5h7m4 0h3m2 0h1m1 0h7M4 5.5h1m5 0h1m3 0h1m2 0h4m1 0h1m5 0h1M4 6.5h1m1 0h3m1 0h1m1 0h2m1 0h1m2 0h1m3 0h1m1 0h3m1 0h1M4 7.5h1m1 0h3m1 0h1m1 0h1m4 0h3m2 0h1m1 0h3m1 0h1M4 8.5h1m1 0h3m1 0h1m1 0h3m2 0h1m2 0h1m1 0h1m1 0h3m1 0h1M4 9.5h1m5 0h1m1 0h1m2 0h1m2 0h2m2 0h1m5 0h1M4 10.5h7m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h7M12 11.5h1m5 0h1m1 0h1M4 12.5h1m1 0h5m5 0h1m5 0h5M5 13.5h1m2 0h2m2 0h1m1 0h2m1 0h1m3 0h1m1 0h1m3 0h1M4 14.5h5m1 0h1m1 0h2m3 0h4m2 0h1m1 0h1m1 0h2M4 15.5h2m1 0h3m2 0h1m1 0h2m1 0h1m1 0h2m1 0h2m4 0h1M5 16.5h3m2 0h1m4 0h2m1 0h2m1 0h2m1 0h1m1 0h3M4 17.5h5m3 0h1m1 0h1m5 0h1m2 0h1m1 0h1m1 0h1M4 18.5h1m5 0h2m2 0h3m2 0h1m2 0h4m1 0h2M4 19.5h1m2 0h1m3 0h1m3 0h1m2 0h7m3 0h1M4 20.5h1m1 0h1m2 0h2m1 0h4m4 0h5m1 0h1M12 21.5h2m2 0h5m3 0h2M4 22.5h7m6 0h2m1 0h1m1 0h1m1 0h1m1 0h3M4 23.5h1m5 0h1m1 0h2m2 0h2m2 0h1m3 0h2m1 0h1M4 24.5h1m1 0h3m1 0h1m1 0h3m1 0h1m1 0h7m1 0h1m1 0h1M4 25.5h1m1 0h3m1 0h1m1 0h1m6 0h1m1 0h2m1 0h5M4 26.5h1m1 0h3m1 0h1m1 0h5m2 0h1m5 0h2m1 0h1M4 27.5h1m5 0h1m4 0h1m2 0h1m1 0h2m1 0h3m2 0h1M4 28.5h7m1 0h2m1 0h1m5 0h8\"/></svg>\n"
}
}/api/v1/tools/barcode-generator1 credit/callBarcode Generator
Generate a Code 128 (Subset B) barcode as an <svg> string via a hand-built encoder (start code, mod-103 checksum, stop pattern) — no external dependency.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | string | Yes | Text to encode. Must be printable ASCII (32-126) for Code 128 Subset B. |
format | string (code128) | No (default "code128") | Barcode symbology. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/barcode-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":"TEST123","format":"code128"}'
{
"success": true,
"tool": "barcode-generator",
"result": {
"svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"264\" height=\"120\" viewBox=\"0 0 264 120\"><rect width=\"264\" height=\"120\" fill=\"#ffffff\"/><rect x=\"20\" y=\"10\" width=\"4\" height=\"100\" fill=\"#000000\"/><rect x=\"26\" y=\"10\" width=\"2\" height=\"100\" fill=\"#000000\"/><rect x=\"32\" y=\"10\" width=\"2\" height=\"100\" fill=\"#000000\"/><rect x=\"42\" y=\"10\" width=\"4\" height=\"100\" fill=\"#000000\"/><rect x=\"48\" y=\"10\" width=\"6\" height=\"100\" fill=\"#000000\"/><rect x=\"60\" y=\"10\" width=\"2\" height=\"100\" fill=\"#000000\"/><rect x=\"64\" y=\"10\" width=\"2\" height=\"100\" fill=\"#000000\"/><rect x=\"72\" y=\"10\" width=\"4\" height=\"100\" fill=\"#000000\"/><rect x=\"78\" y=\"10\" width=\"2\" height=\"100\" fill=\"#000000\"/><rect x=\"86\" y=\"10\" width=\"4\" height=\"100\" fill=\"#000000\"/><rect x=\"92\" y=\"10\" width=\"6\" height=\"100\" fill=\"#000000\"/><rect x=\"100\" y=\"10\" width=\"2\" height=\"100\" fill=\"#000000\"/><rect x=\"108\" y=\"10\" width=\"4\" height=\"100\" fill=\"#000000\"/><rect x=\"114\" y=\"10\" width=\"6\" height=\"100\" fill=\"#000000\"/><rect x=\"126\" y=\"10\" width=\"2\" height=\"100\" fill=\"#000000\"/><rect x=\"130\" y=\"10\" width=\"2\" height=\"100\" fill=\"#000000\"/><rect x=\"136\" y=\"10\" width=\"6\" height=\"100\" fill=\"#000000\"/><rect x=\"146\" y=\"10\" width=\"4\" height=\"100\" fill=\"#000000\"/><rect x=\"152\" y=\"10\" width=\"4\" height=\"100\" fill=\"#000000\"/><rect x=\"160\" y=\"10\" width=\"6\" height=\"100\" fill=\"#000000\"/><rect x=\"170\" y=\"10\" width=\"2\" height=\"100\" fill=\"#000000\"/><rect x=\"174\" y=\"10\" width=\"4\" height=\"100\" fill=\"#000000\"/><rect x=\"182\" y=\"10\" width=\"2\" height=\"100\" fill=\"#000000\"/><rect x=\"186\" y=\"10\" width=\"6\" height=\"100\" fill=\"#000000\"/><rect x=\"196\" y=\"10\" width=\"2\" height=\"100\" fill=\"#000000\"/><rect x=\"200\" y=\"10\" width=\"2\" height=\"100\" fill=\"#000000\"/><rect x=\"208\" y=\"10\" width=\"8\" height=\"100\" fill=\"#000000\"/><rect x=\"218\" y=\"10\" width=\"4\" height=\"100\" fill=\"#000000\"/><rect x=\"228\" y=\"10\" width=\"6\" height=\"100\" fill=\"#000000\"/><rect x=\"236\" y=\"10\" width=\"2\" height=\"100\" fill=\"#000000\"/><rect x=\"240\" y=\"10\" width=\"4\" height=\"100\" fill=\"#000000\"/></svg>"
}
}/api/v1/tools/password-generator1 credit/callPassword Generator
Generate a cryptographically random password (node:crypto, never Math.random) that is guaranteed to include at least one character from every selected character type.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
length | number | Yes | Password length. |
includeUppercase | boolean | No (default true) | Include uppercase letters (A-Z). |
includeLowercase | boolean | No (default true) | Include lowercase letters (a-z). |
includeNumbers | boolean | No (default true) | Include digits (0-9). |
includeSymbols | boolean | No (default false) | Include symbols (!@#$%^&*()_+-=[]{}|;:,.<>?). |
excludeAmbiguous | boolean | No (default false) | Exclude visually ambiguous characters (0, O, o, 1, l, I). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/password-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"length":16,"includeUppercase":true,"includeLowercase":true,"includeNumbers":true,"includeSymbols":true}'
{
"success": true,
"tool": "password-generator",
"result": {
"password": "aB3!kQ9mP1xL7vB2"
}
}/api/v1/tools/hash-generator1 credit/callHash Generator
Compute a hex-encoded cryptographic hash digest of the given text using node:crypto. MD5 and SHA-1 are provided for compatibility/checksums only — neither is safe for password storage or security-sensitive integrity checks.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | Yes | Text to hash. |
algorithm | string (md5 | sha1 | sha256 | sha512) | No (default "sha256") | Hash algorithm. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/hash-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"input":"hello","algorithm":"sha256"}'
{
"success": true,
"tool": "hash-generator",
"result": {
"hash": "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824",
"algorithm": "sha256"
}
}/api/v1/tools/password-strength-checker1 credit/callPassword Strength Checker
Estimate password strength via a length + character-set + common-pattern heuristic (no external dependency, no zxcvbn). NOTE: unlike the browser tool, this API endpoint receives the password over the wire to score it server-side — it is never logged or stored, but it is transmitted, which the browser version avoids.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
password | string | Yes | The password to evaluate. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/password-strength-checker \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"password":"Tr0ub4dor&3"}'
{
"success": true,
"tool": "password-strength-checker",
"result": {
"score": 3,
"label": "Strong",
"entropyBits": 72.1,
"suggestions": [
"Use at least 12 characters."
]
}
}/api/v1/tools/random-number-generator1 credit/callRandom Number Generator
Generate one or more random numbers in [min, max] using node:crypto (never Math.random).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
min | number | Yes | Minimum value (inclusive). |
max | number | Yes | Maximum value (inclusive). |
count | number | No (default 1) | How many numbers to generate. |
integer | boolean | No (default true) | Generate whole numbers instead of decimals. |
unique | boolean | No (default false) | Generate only distinct values (when integer is true, requires count <= the number of whole numbers in range). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/random-number-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"min":1,"max":100,"count":5,"integer":true,"unique":true}'
{
"success": true,
"tool": "random-number-generator",
"result": {
"numbers": [
7,
42,
13,
91,
56
]
}
}/api/v1/tools/random-name-generator1 credit/callRandom Name Generator
Generate random full/first/last names from seed name lists using node:crypto.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
type | string (full | first | last) | No (default "full") | Which part of the name to return. |
gender | string (male | female | any) | No (default "any") | Restrict first-name selection by gender ("any" draws from both pools). |
count | number | No (default 1) | How many names to generate. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/random-name-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"type":"full","gender":"any","count":3}'
{
"success": true,
"tool": "random-name-generator",
"result": {
"names": [
"James Smith",
"Mary Johnson",
"Robert Williams"
]
}
}/api/v1/tools/random-color-generator1 credit/callRandom Color Generator
Generate random colors in hex, rgb(), or hsl() format using node:crypto.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
format | string (hex | rgb | hsl) | No (default "hex") | Output color format. |
count | number | No (default 1) | How many colors to generate. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/random-color-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"format":"hex","count":3}'
{
"success": true,
"tool": "random-color-generator",
"result": {
"colors": [
"#a3f2c1",
"#004488",
"#ff00aa"
]
}
}/api/v1/tools/placeholder-image-generator1 credit/callPlaceholder Image Generator
Generate a placeholder <svg> image of the requested dimensions with a solid background and centered label text (escaped).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
width | number | Yes | Image width in pixels. |
height | number | Yes | Image height in pixels. |
bgColor | string | No (default "e5e7eb") | Background color as a hex code (e.g. "#e5e7eb" or "e5e7eb"). |
textColor | string | No (default "6b7280") | Label text color as a hex code. |
text | string | No | Label text. Defaults to "{width}x{height}" when omitted. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/placeholder-image-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"width":800,"height":600}'
{
"success": true,
"tool": "placeholder-image-generator",
"result": {
"svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"800\" height=\"600\" viewBox=\"0 0 800 600\"><rect width=\"800\" height=\"600\" fill=\"#e5e7eb\"/><text x=\"400\" y=\"300\" font-family=\"sans-serif\" font-size=\"75\" fill=\"#6b7280\" text-anchor=\"middle\" dominant-baseline=\"middle\">800x600</text></svg>"
}
}/api/v1/tools/fake-data-generator1 credit/callFake Data Generator
Generate realistic-looking fake data (name, email, address, phone, company, username, lorem text, or date) from seed lists + node:crypto — never real personal data. (A separate uuid-generator endpoint already covers UUIDs.)
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
type | string (name | email | address | phone | company | username | lorem | date) | Yes | Kind of fake data to generate. |
count | number | No (default 1) | How many items to generate. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/fake-data-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"type":"email","count":3}'
{
"success": true,
"tool": "fake-data-generator",
"result": {
"data": [
"john.smith42@example.com",
"mary.johnson7@test.org",
"robert.williams88@mail.com"
]
}
}/api/v1/tools/meta-tag-generator1 credit/callMeta Tag Generator
Generate an HTML <meta> tag block (title, description, keywords, author, Open Graph image, Twitter Card) for SEO. Every value is HTML-escaped before being interpolated, so quotes/angle brackets in the input cannot break out of an attribute or inject markup.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Page title. |
description | string | No | Meta description. |
keywords | string | No | Comma-separated keywords. |
author | string | No | Page author. |
ogImage | string | No | Open Graph image URL. |
twitterCard | string (summary | summary_large_image) | No (default "summary") | Twitter Card type. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/meta-tag-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"title":"My Page","description":"A great page.","keywords":"a, b, c","author":"Jane Doe","ogImage":"https://example.com/image.png","twitterCard":"summary"}'
{
"success": true,
"tool": "meta-tag-generator",
"result": {
"html": "<title>My Page</title>\n<meta name=\"description\" content=\"A great page.\">\n<meta name=\"keywords\" content=\"a, b, c\">\n<meta name=\"author\" content=\"Jane Doe\">\n<meta property=\"og:title\" content=\"My Page\">\n<meta property=\"og:description\" content=\"A great page.\">\n<meta property=\"og:image\" content=\"https://example.com/image.png\">\n<meta name=\"twitter:card\" content=\"summary\">\n<meta name=\"twitter:title\" content=\"My Page\">\n<meta name=\"twitter:description\" content=\"A great page.\">"
}
}/api/v1/tools/open-graph-generator1 credit/callOpen Graph Tag Generator
Generate Open Graph + Twitter Card <meta> tags for social sharing previews. Every value is HTML-escaped before being interpolated, so quotes/angle brackets in the input cannot break out of an attribute or inject markup.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
ogTitle | string | Yes | Open Graph title (og:title). |
ogDescription | string | No | Open Graph description (og:description). |
ogImage | string | No | Open Graph image URL (og:image). |
ogUrl | string | No | Canonical page URL (og:url). |
ogType | string (website | article | profile | product | book | music.song | video.movie) | No (default "website") | Open Graph content type (og:type). |
ogSiteName | string | No | Site name (og:site_name). |
twitterCard | string (summary | summary_large_image) | No (default "summary") | Twitter Card type. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/open-graph-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"ogTitle":"My Page","ogDescription":"A great page.","ogUrl":"https://example.com","ogType":"website"}'
{
"success": true,
"tool": "open-graph-generator",
"result": {
"html": "<meta property=\"og:title\" content=\"My Page\">\n<meta property=\"og:description\" content=\"A great page.\">\n<meta property=\"og:type\" content=\"website\">\n<meta property=\"og:url\" content=\"https://example.com\">\n<meta name=\"twitter:card\" content=\"summary\">\n<meta name=\"twitter:title\" content=\"My Page\">\n<meta name=\"twitter:description\" content=\"A great page.\">"
}
}/api/v1/tools/schema-markup-generator1 credit/callSchema Markup Generator
Generate JSON-LD structured data for a schema.org type (Article, Product, Organization, LocalBusiness, FAQPage, BreadcrumbList, Person, Event). The output is built as a plain object and serialized with JSON.stringify — never hand-concatenated — and every literal `<` is then escaped so a field value containing `</script>` cannot terminate the `<script type="application/ld+json">` tag this output is meant to be pasted into.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
type | string (Article | Product | Organization | LocalBusiness | FAQPage | BreadcrumbList | Person | Event) | Yes | schema.org type to generate. |
name | string | No | Name / headline (Article headline; Product/Organization/LocalBusiness/Person/Event name). |
description | string | No | Description text (Article, Product, Event). |
url | string | No | Canonical URL (Article, Organization, LocalBusiness, Person). |
image | string | No | Image/logo URL (Article, Product, Organization logo, Person, Event). |
author | string | No | Author name (Article). |
datePublished | string | No | ISO date published (Article). |
price | number | No | Price (Product). |
priceCurrency | string | No (default "USD") | ISO 4217 currency code (Product). |
availability | string (InStock | OutOfStock | PreOrder | LimitedAvailability) | No (default "InStock") | Stock availability (Product). |
ratingValue | number | No | Average rating 0-5 (Product). |
streetAddress | string | No | Street address (LocalBusiness, Event venue). |
addressLocality | string | No | City (LocalBusiness, Event venue). |
telephone | string | No | Phone number (LocalBusiness, Person). |
jobTitle | string | No | Job title (Person). |
startDate | string | No | ISO start date/time (Event). |
endDate | string | No | ISO end date/time (Event). |
venueName | string | No | Venue name (Event). |
faqItems | string | No | Required for FAQPage: a JSON array of {"question","answer"} objects (max 50 items, 500 chars each). |
breadcrumbItems | string | No | Required for BreadcrumbList: a JSON array of {"name","url"} objects (max 20 items, 500 chars each). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/schema-markup-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"type":"Article","name":"My Blog Post","author":"Jane Doe","datePublished":"2026-01-01","description":"A great post."}'
{
"success": true,
"tool": "schema-markup-generator",
"result": {
"jsonld": "{\n \"@context\": \"https://schema.org\",\n \"@type\": \"Article\",\n \"headline\": \"My Blog Post\",\n \"description\": \"A great post.\",\n \"author\": {\n \"@type\": \"Person\",\n \"name\": \"Jane Doe\"\n },\n \"datePublished\": \"2026-01-01\"\n}"
}
}/api/v1/tools/favicon-generator1 credit/callFavicon Generator (from Text)
Generate a simple <svg> favicon: a colored square/circle/rounded-square shape with up to 4 characters of centered text (escaped).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
text | string | No (default "A") | Text/letter(s) to center on the favicon (max 4 characters). |
bgColor | string | No (default "4f46e5") | Background color as a hex code. |
textColor | string | No (default "ffffff") | Text color as a hex code. |
shape | string (square | circle | rounded) | No (default "square") | Background shape. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/favicon-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"text":"F","bgColor":"4f46e5","textColor":"ffffff","shape":"circle"}'
{
"success": true,
"tool": "favicon-generator",
"result": {
"svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"64\" viewBox=\"0 0 64 64\"><circle cx=\"32\" cy=\"32\" r=\"32\" fill=\"#4f46e5\"/><text x=\"32\" y=\"32\" font-family=\"sans-serif\" font-size=\"32\" font-weight=\"700\" fill=\"#ffffff\" text-anchor=\"middle\" dominant-baseline=\"central\">F</text></svg>"
}
}Color Tools
/api/v1/tools/color-converter1 credit/callColor Converter
Convert a hex color to its RGB, HSL, HSV, and CMYK equivalents.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
color | string | Yes | Hex color, e.g. "#FF0000", "f00", or "#FF0000FF" ("#" optional; 3/4/6/8 hex digits). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/color-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"color":"#FF0000"}'
{
"success": true,
"tool": "color-converter",
"result": {
"hex": "#FF0000",
"rgb": {
"r": 255,
"g": 0,
"b": 0
},
"hsl": {
"h": 0,
"s": 100,
"l": 50
},
"hsv": {
"h": 0,
"s": 100,
"v": 100
},
"cmyk": {
"c": 0,
"m": 100,
"y": 100,
"k": 0
}
}
}/api/v1/tools/color-palette-generator1 credit/callColor Palette Generator
Generate a color palette from a base hex color using HSL hue rotation. `scheme` selects the relationship: "complementary" (2 colors, +180°), "triadic" (3, +120°/+240°), "tetradic" (4, +90°/+180°/+270°), "split-complementary" (3, +150°/+210°), "analogous" (`count` colors, 30° steps centered on the base hue), or "monochromatic" (`count` colors, same hue/saturation with varying lightness).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
color | string | Yes | Base hex color. |
scheme | string (complementary | analogous | triadic | tetradic | monochromatic | split-complementary) | Yes | Palette relationship to the base color. |
count | number | No (default 5) | Number of colors to generate (only used by "analogous" and "monochromatic" — other schemes have a fixed count). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/color-palette-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"color":"#FF0000","scheme":"complementary"}'
{
"success": true,
"tool": "color-palette-generator",
"result": {
"colors": [
"#FF0000",
"#00FFFF"
]
}
}/api/v1/tools/contrast-checker1 credit/callContrast Checker (WCAG)
Compute the WCAG 2.x contrast ratio between a foreground and background hex color, using the exact sRGB-linearized relative-luminance formula (not a naive RGB average), and report AA/AAA pass/fail for normal and large text.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
foreground | string | Yes | Foreground (text) hex color. |
background | string | Yes | Background hex color. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/contrast-checker \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"foreground":"#000000","background":"#FFFFFF"}'
{
"success": true,
"tool": "contrast-checker",
"result": {
"ratio": 21,
"aa": true,
"aaLarge": true,
"aaa": true,
"aaaLarge": true
}
}/api/v1/tools/css-gradient-generator-color1 credit/callCSS Gradient Generator
Build a CSS linear-gradient() or radial-gradient() string from 2-10 comma-separated hex colors. `angle` applies only to the "linear" type.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
type | string (linear | radial) | No (default "linear") | Gradient type. |
angle | number | No (default 90) | Gradient angle in degrees (linear type only). |
colors | string | Yes | Comma-separated hex colors, 2-10, e.g. "#ff0000,#0000ff". |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/css-gradient-generator-color \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"type":"linear","angle":90,"colors":"#ff0000,#0000ff"}'
{
"success": true,
"tool": "css-gradient-generator-color",
"result": {
"css": "linear-gradient(90deg, #FF0000, #0000FF)"
}
}/api/v1/tools/color-blindness-simulator1 credit/callColor Blindness Simulator
Simulate how a hex color appears under color vision deficiency (CVD). Protanopia/deuteranopia/tritanopia use the widely-cited simplified RGB-space transformation matrices for dichromacy simulation (as used by common browser-based CVD simulators), applied directly to sRGB channel values without linearizing gamma first. Achromatopsia converts to full grayscale using the Rec. 709 luma formula (0.2126R + 0.7152G + 0.0722B) applied directly to sRGB values — a different, unrelated formula from the WCAG relative-luminance formula contrast-checker uses (that one linearizes each channel first). The "-anomaly" variants (protanomaly/deuteranomaly/tritanomaly) are not separately modeled; as a documented approximation, they blend the corresponding full-dichromacy simulated color 50/50 with the original.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
color | string | Yes | Hex color to simulate. |
type | string (protanopia | deuteranopia | tritanopia | achromatopsia | protanomaly | deuteranomaly | tritanomaly) | Yes | Color vision deficiency type to simulate. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/color-blindness-simulator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"color":"#FF0000","type":"achromatopsia"}'
{
"success": true,
"tool": "color-blindness-simulator",
"result": {
"original": "#FF0000",
"simulated": "#363636",
"type": "achromatopsia"
}
}/api/v1/tools/color-shade-tint-generator1 credit/callColor Shade/Tint Generator
Generate shades (the base color mixed toward black) and tints (mixed toward white) of a hex color, in RGB space, evenly spaced from near the base color to near black/white.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
color | string | Yes | Base hex color. |
steps | number | No (default 5) | Number of shades and number of tints to generate. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/color-shade-tint-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"color":"#FF0000","steps":3}'
{
"success": true,
"tool": "color-shade-tint-generator",
"result": {
"shades": [
"#BF0000",
"#800000",
"#400000"
],
"tints": [
"#FF4040",
"#FF8080",
"#FFBFBF"
]
}
}/api/v1/tools/image-color-extractor1 credit/callImage Color Extractor
Extract the top dominant colors from an uploaded image. The image is downsampled to at most 100x10016 and counted; the most frequent quantized colors are returned with their share of the (downsampled) image. Send `file` as binary multipart form-data.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The image to analyze (sent as binary multipart/form-data). |
count | number | No (default 6) | Number of dominant colors to return. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/image-color-extractor \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"count":6}'
{
"success": true,
"tool": "image-color-extractor",
"result": {
"colors": [
{
"hex": "#FF0000",
"rgb": {
"r": 255,
"g": 0,
"b": 0
},
"percentage": 100
}
]
}
}/api/v1/tools/tailwind-color-finder1 credit/callTailwind CSS Color Finder
Find the nearest color(s) in the real Tailwind CSS v3 default palette (22 hues x 11 shades, 50-950) to a given hex color, by Euclidean distance in RGB space (not Lab).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
color | string | Yes | Hex color to match. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/tailwind-color-finder \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"color":"#ef4444"}'
{
"success": true,
"tool": "tailwind-color-finder",
"result": {
"input": "#EF4444",
"name": "red-500",
"hex": "#EF4444",
"distance": 0,
"alternatives": [
{
"name": "rose-500",
"hex": "#F43F5E",
"distance": 26.94
},
{
"name": "rose-600",
"hex": "#E11D48",
"distance": 41.63
},
{
"name": "red-600",
"hex": "#DC2626",
"distance": 46.49
},
{
"name": "orange-600",
"hex": "#EA580C",
"distance": 59.67
}
]
}
}Math Calculators
/api/v1/tools/percentage-calculator1 credit/callPercentage Calculator
Answer one of three common percentage questions, selected by `mode`: "percent-of" (what is x% of y), "what-percent" (x is what % of y), or "percent-change" (percentage change from x to y).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
mode | string (percent-of | what-percent | percent-change) | Yes | Which percentage question to answer. |
x | number | Yes | First value (meaning depends on mode — see summary). |
y | number | Yes | Second value (meaning depends on mode — see summary). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/percentage-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"mode":"percent-of","x":20,"y":150}'
{
"success": true,
"tool": "percentage-calculator",
"result": {
"percent": 20,
"of": 150,
"result": 30
}
}/api/v1/tools/age-calculator1 credit/callAge Calculator
Compute age (years, months, days, and total days) as of a given date (defaults to now).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
birthDate | string | Yes | Birth date, e.g. "1990-05-15". |
asOfDate | string | No | Date to compute age as of (defaults to the current date). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/age-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"birthDate":"2000-01-01","asOfDate":"2024-06-15"}'
{
"success": true,
"tool": "age-calculator",
"result": {
"years": 24,
"months": 5,
"days": 14,
"totalDays": 8932
}
}/api/v1/tools/tip-calculator1 credit/callTip Calculator
Calculate a tip amount, total bill, and per-person split.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
bill | number | Yes | Bill amount before tip. |
tipPercent | number | Yes | Tip percentage. |
people | number | No (default 1) | Number of people splitting the bill. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/tip-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"bill":85.5,"tipPercent":18,"people":4}'
{
"success": true,
"tool": "tip-calculator",
"result": {
"tipAmount": 15.39,
"total": 100.89,
"perPerson": 25.2225
}
}/api/v1/tools/discount-calculator1 credit/callDiscount Calculator
Calculate the discount amount and final price after applying a percentage discount.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
price | number | Yes | Original price. |
discountPercent | number | Yes | Discount percentage. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/discount-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"price":99.99,"discountPercent":25}'
{
"success": true,
"tool": "discount-calculator",
"result": {
"discountAmount": 25,
"finalPrice": 74.99,
"saved": 25
}
}/api/v1/tools/roman-numeral-converter1 credit/callRoman Numeral Converter
Convert between integers and Roman numerals (1–3999). "to-roman": `value` is a decimal integer string. "from-roman": `value` is a canonical (subtractive-notation) Roman numeral string.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
mode | string (to-roman | from-roman) | Yes | Conversion direction. |
value | string | Yes | Decimal integer ("to-roman") or Roman numeral ("from-roman"). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/roman-numeral-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"mode":"to-roman","value":"1994"}'
{
"success": true,
"tool": "roman-numeral-converter",
"result": {
"value": 1994,
"roman": "MCMXCIV"
}
}/api/v1/tools/number-base-converter1 credit/callNumber Base Converter
Convert a number (as a string) from one base to another (bases 2–36), using arbitrary-precision arithmetic.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | string | Yes | The number to convert, in fromBase. |
fromBase | number | Yes | Base of the input value. |
toBase | number | Yes | Base to convert to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/number-base-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":"ff","fromBase":16,"toBase":10}'
{
"success": true,
"tool": "number-base-converter",
"result": {
"result": "255"
}
}/api/v1/tools/number-to-words1 credit/callNumber to Words
Convert an integer (magnitude up to 1,000,000,000,000,000, i.e. 10^15) into English words.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | The integer to convert. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/number-to-words \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":1994}'
{
"success": true,
"tool": "number-to-words",
"result": {
"words": "one thousand nine hundred ninety-four"
}
}/api/v1/tools/aspect-ratio-calculator1 credit/callAspect Ratio Calculator
Simplify width×height to an aspect ratio ("ratio" mode), or solve for a missing dimension given a target ratio and the other dimension ("solve-width"/"solve-height" modes).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
mode | string (ratio | solve-width | solve-height) | Yes | Operation to perform. |
width | number | No | Width in pixels ("ratio" mode required; "solve-width" mode: the solved-for output). |
height | number | No | Height in pixels ("ratio"/"solve-height" modes required). |
ratioWidth | number | No | Ratio width term (required, "solve-*" modes only). |
ratioHeight | number | No | Ratio height term (required, "solve-*" modes only). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/aspect-ratio-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"mode":"ratio","width":1920,"height":1080}'
{
"success": true,
"tool": "aspect-ratio-calculator",
"result": {
"ratioWidth": 16,
"ratioHeight": 9,
"decimal": 1.7778
}
}/api/v1/tools/date-difference-calculator1 credit/callDate Difference Calculator
Compute the difference between two dates: total days, weeks, and a calendar-aware years/months/days breakdown.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
date1 | string | Yes | First date. |
date2 | string | Yes | Second date. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/date-difference-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"date1":"2024-01-01","date2":"2024-01-08"}'
{
"success": true,
"tool": "date-difference-calculator",
"result": {
"totalDays": 7,
"weeks": 1,
"years": 0,
"months": 0,
"days": 7
}
}/api/v1/tools/fraction-calculator1 credit/callFraction Calculator
Add, subtract, multiply, or divide two fractions and return the simplified result.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
n1 | number | Yes | Numerator of the first fraction. |
d1 | number | Yes | Denominator of the first fraction (non-zero). |
n2 | number | Yes | Numerator of the second fraction. |
d2 | number | Yes | Denominator of the second fraction (non-zero). |
operation | string (add | subtract | multiply | divide) | Yes | Operation to perform. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/fraction-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"n1":1,"d1":2,"n2":1,"d2":3,"operation":"add"}'
{
"success": true,
"tool": "fraction-calculator",
"result": {
"numerator": 5,
"denominator": 6,
"decimal": 0.8333333333333334
}
}/api/v1/tools/standard-deviation-calculator1 credit/callStandard Deviation Calculator
Compute the standard deviation, variance, mean, and count of a dataset (up to 10,000 numbers). `type` selects population (divide by n) or sample (divide by n-1, default) variance.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
numbers | string | Yes | Newline- or comma-separated numbers. |
type | string (population | sample) | No (default "sample") | Population or sample standard deviation. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/standard-deviation-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"numbers":"2,4,4,4,5,5,7,9","type":"population"}'
{
"success": true,
"tool": "standard-deviation-calculator",
"result": {
"stdDev": 2,
"variance": 4,
"mean": 5,
"count": 8
}
}/api/v1/tools/probability-calculator1 credit/callProbability Calculator
Compute a probability, selected by `mode`: "single" (favorable/total outcomes of one event), or "combined" (AND/OR of two independent probabilities, each 0-1, via `operator`).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
mode | string (single | combined) | Yes | Which probability question to answer. |
favorable | number | No | Favorable outcome count (required, "single" mode). |
total | number | No | Total outcome count (required, "single" mode). |
pA | number | No | Probability of event A, 0-1 (required, "combined" mode). |
pB | number | No | Probability of event B, 0-1 (required, "combined" mode). |
operator | string (and | or) | No | Combine as AND or OR (required, "combined" mode). Assumes independent events. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/probability-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"mode":"single","favorable":1,"total":6}'
{
"success": true,
"tool": "probability-calculator",
"result": {
"probability": 0.16666666666666666,
"percentage": 16.666666666666664
}
}/api/v1/tools/permutation-combination-calculator1 credit/callPermutation & Combination Calculator
Compute the number of permutations (nPr) and combinations (nCr) of r items from a set of n (n, r up to 1000).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
n | number | Yes | Size of the set. |
r | number | Yes | Number of items chosen (must be <= n). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/permutation-combination-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"n":5,"r":3}'
{
"success": true,
"tool": "permutation-combination-calculator",
"result": {
"permutations": 60,
"combinations": 10
}
}/api/v1/tools/matrix-calculator1 credit/callMatrix Calculator
Perform matrix operations (add, subtract, multiply, determinant, transpose) on one or two matrices, each up to 10x10. Matrices are rows of numbers, one row per line, values space- or comma-separated. `matrixB` is required for add/subtract/multiply.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
matrixA | string | Yes | First matrix: rows of numbers, one row per line. |
matrixB | string | No | Second matrix (required for add/subtract/multiply). |
operation | string (add | subtract | multiply | determinant | transpose) | Yes | Operation to perform. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/matrix-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"matrixA":"1 2\n3 4","matrixB":"5 6\n7 8","operation":"add"}'
{
"success": true,
"tool": "matrix-calculator",
"result": {
"result": [
[
6,
8
],
[
10,
12
]
],
"rows": 2,
"cols": 2
}
}/api/v1/tools/quadratic-equation-solver1 credit/callQuadratic Equation Solver
Solve ax^2 + bx + c = 0 for x, returning the discriminant, root(s), and their nature (real or complex).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
a | number | Yes | Quadratic coefficient (must not be 0). |
b | number | Yes | Linear coefficient. |
c | number | Yes | Constant term. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/quadratic-equation-solver \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"a":1,"b":-5,"c":6}'
{
"success": true,
"tool": "quadratic-equation-solver",
"result": {
"discriminant": 1,
"roots": [
3,
2
],
"nature": "two-real-roots"
}
}/api/v1/tools/gpa-calculator1 credit/callGPA Calculator
Compute GPA on the standard 4.0 scale from a list of courses (up to 1,000), one "grade credits" pair per line (e.g. "A- 3").
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
courses | string | Yes | One "grade credits" pair per line, e.g. "A 3\nB+ 4\nA- 3". |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/gpa-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"courses":"A 3\nB+ 4\nA- 3"}'
{
"success": true,
"tool": "gpa-calculator",
"result": {
"gpa": 3.63,
"totalCredits": 10
}
}/api/v1/tools/grade-calculator1 credit/callGrade Calculator
Compute a weighted grade from a list of score/weight pairs (up to 1,000), one "score weight" pair per line (e.g. "85 30" for an 85% score weighted at 30%).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
items | string | Yes | One "score weight" pair per line, e.g. "85 30\n90 40\n95 30". |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/grade-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"items":"85 30\n90 40\n95 30"}'
{
"success": true,
"tool": "grade-calculator",
"result": {
"grade": 90,
"totalWeight": 100
}
}/api/v1/tools/mean-median-mode-calculator1 credit/callMean, Median, Mode Calculator
Compute the mean, median, mode(s), and range of a dataset (up to 10,000 numbers).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
numbers | string | Yes | Newline- or comma-separated numbers. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/mean-median-mode-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"numbers":"1,2,2,3,4"}'
{
"success": true,
"tool": "mean-median-mode-calculator",
"result": {
"mean": 2.4,
"median": 2,
"mode": [
2
],
"range": 3,
"count": 5
}
}/api/v1/tools/ratio-calculator1 credit/callRatio Calculator
Simplify a ratio a:b to lowest terms ("simplify" mode), or solve a:b = c:x for the missing fourth term ("solve" mode).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
mode | string (simplify | solve) | Yes | Operation to perform. |
a | number | Yes | First term of the ratio. |
b | number | Yes | Second term of the ratio. |
c | number | No | Third term (required, "solve" mode only): solves a:b = c:x for x. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/ratio-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"mode":"simplify","a":8,"b":12}'
{
"success": true,
"tool": "ratio-calculator",
"result": {
"simplified": "2:3",
"ratioA": 2,
"ratioB": 3
}
}/api/v1/tools/exponent-calculator1 credit/callExponent Calculator
Calculate base raised to the power of exponent.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
base | number | Yes | The base. |
exponent | number | Yes | The exponent. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/exponent-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"base":2,"exponent":10}'
{
"success": true,
"tool": "exponent-calculator",
"result": {
"result": 1024
}
}/api/v1/tools/logarithm-calculator1 credit/callLogarithm Calculator
Calculate the logarithm of a positive value in a given positive base (base ≠ 1). Defaults to base 10.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | The value to take the logarithm of (must be > 0). |
base | number | No (default 10) | The logarithm base (must be > 0 and ≠ 1). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/logarithm-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":100,"base":10}'
{
"success": true,
"tool": "logarithm-calculator",
"result": {
"result": 2
}
}/api/v1/tools/prime-factorization-calculator1 credit/callPrime Factorization Calculator
Compute the prime factorization of an integer >= 2, up to 1,000,000,000, via trial division.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | Integer to factorize (2 <= value <= 1,000,000,000). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/prime-factorization-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":360}'
{
"success": true,
"tool": "prime-factorization-calculator",
"result": {
"factors": [
{
"prime": 2,
"exponent": 3
},
{
"prime": 3,
"exponent": 2
},
{
"prime": 5,
"exponent": 1
}
],
"factorization": "2^3 × 3^2 × 5"
}
}/api/v1/tools/lcm-gcd-calculator1 credit/callLCM & GCD Calculator
Compute the GCD (greatest common divisor) and LCM (least common multiple) of a list of integers (up to 100, each with magnitude up to Number.MAX_SAFE_INTEGER = 9007199254740991).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
numbers | string | Yes | Newline-, comma-, or space-separated integers (at least 2). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/lcm-gcd-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"numbers":"12, 18, 24"}'
{
"success": true,
"tool": "lcm-gcd-calculator",
"result": {
"lcm": 72,
"gcd": 6
}
}/api/v1/tools/binary-calculator1 credit/callBinary Calculator
Perform arithmetic or bitwise operations on two binary numbers (up to 20 bits each). A negative result (from subtract) is returned with a leading "-".
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
a | string | Yes | First binary operand (0s and 1s only). |
b | string | Yes | Second binary operand (0s and 1s only). |
operation | string (add | subtract | multiply | divide | and | or | xor) | Yes | Operation to perform. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/binary-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"a":"1010","b":"1100","operation":"add"}'
{
"success": true,
"tool": "binary-calculator",
"result": {
"binary": "10110",
"decimal": 22
}
}/api/v1/tools/hex-calculator1 credit/callHex Calculator
Perform arithmetic or bitwise operations on two hexadecimal numbers (up to 6 digits each). A negative result (from subtract) is returned with a leading "-".
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
a | string | Yes | First hex operand (0-9, a-f). |
b | string | Yes | Second hex operand (0-9, a-f). |
operation | string (add | subtract | multiply | divide | and | or | xor) | Yes | Operation to perform. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/hex-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"a":"FF","b":"1","operation":"add"}'
{
"success": true,
"tool": "hex-calculator",
"result": {
"hex": "100",
"decimal": 256
}
}Health & Fitness
/api/v1/tools/bmi-calculator1 credit/callBMI Calculator
Calculate Body Mass Index (BMI = weight kg / height m squared) and its standard WHO category. BMI is a population-level screening estimate that does not distinguish muscle from fat — informational and educational only, not medical advice; consult a qualified professional for individual assessment.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
weight_kg | number | Yes | Body weight in kilograms. |
height_cm | number | Yes | Height in centimeters. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/bmi-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"weight_kg":70,"height_cm":175}'
{
"success": true,
"tool": "bmi-calculator",
"result": {
"bmi": 22.86,
"category": "Normal weight",
"healthyRangeKg": {
"min": 56.7,
"max": 76.3
}
}
}/api/v1/tools/bmr-calculator1 credit/callBMR Calculator
Estimate Basal Metabolic Rate (BMR) — the calories your body burns at rest — using the Mifflin-St Jeor equation (default) or the revised Harris-Benedict equation. Informational estimate only, not medical advice; actual metabolic rate varies by individual — consult a qualified healthcare or nutrition professional for personalized guidance.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
weight_kg | number | Yes | Body weight in kilograms. |
height_cm | number | Yes | Height in centimeters. |
age | number | Yes | Age in years. |
sex | string (male | female) | Yes | Biological sex used by the formula. |
formula | string (mifflin | harris-benedict) | No (default "mifflin") | Which BMR equation to use. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/bmr-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"weight_kg":80,"height_cm":180,"age":30,"sex":"male","formula":"mifflin"}'
{
"success": true,
"tool": "bmr-calculator",
"result": {
"bmr": 1780,
"formula": "mifflin",
"sex": "male"
}
}/api/v1/tools/body-fat-calculator1 credit/callBody Fat Calculator
Estimate body fat percentage using the U.S. Navy circumference method (men: height, neck, waist; women: height, neck, waist, hip). A population-level estimate with a known error margin, not a clinical body-composition measurement (e.g. a DEXA scan) — informational only, not medical advice.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sex | string (male | female) | Yes | Biological sex (determines which Navy formula is used). |
height_cm | number | Yes | Height in centimeters. |
neck_cm | number | Yes | Neck circumference in centimeters, measured just below the larynx. |
waist_cm | number | Yes | Waist circumference in centimeters (at the navel for men, narrowest point for women); must exceed neck_cm for men. |
hip_cm | number | No | Hip circumference in centimeters at the widest point (required for women). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/body-fat-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"sex":"male","height_cm":180,"neck_cm":38,"waist_cm":85}'
{
"success": true,
"tool": "body-fat-calculator",
"result": {
"sex": "male",
"method": "US Navy circumference method",
"bodyFatPercent": 16.1
}
}/api/v1/tools/water-intake-calculator1 credit/callWater Intake Calculator
Estimate daily water intake using the commonly-cited ~35 mL per kilogram of body weight guideline, plus an adjustment of ~12 mL per minute of exercise (roughly 350 mL per 30 minutes). Informational estimate only, not medical advice — actual hydration needs vary with climate, health conditions, and diet.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
weight_kg | number | Yes | Body weight in kilograms. |
activity_minutes | number | No (default 0) | Minutes of exercise/physical activity per day. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/water-intake-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"weight_kg":70,"activity_minutes":30}'
{
"success": true,
"tool": "water-intake-calculator",
"result": {
"baseMl": 2450,
"activityAdjustmentMl": 360,
"totalMl": 2810,
"totalLiters": 2.81
}
}/api/v1/tools/heart-rate-zones1 credit/callHeart Rate Zones
Estimate maximum heart rate and 5 training heart-rate zones from age, using the "220 minus age" formula (default) or the Tanaka formula (208 - 0.7 x age), expressed either as percent of max heart rate (default) or, given a resting heart rate, the Karvonen percent-of-heart-rate-reserve method. Informational estimate only, not medical advice — max heart rate has a wide individual error margin; consult a healthcare professional before starting an intense exercise program.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
age | number | Yes | Age in years. |
restingHR | number | No | Resting heart rate in bpm (required when formula is "karvonen"). |
formula | string (max-hr | karvonen) | No (default "max-hr") | Zone model: "max-hr" (percent of max heart rate) or "karvonen" (percent of heart-rate reserve; requires restingHR). |
maxHrFormula | string (220-age | tanaka) | No (default "220-age") | Which equation estimates max heart rate. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/heart-rate-zones \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"age":30,"formula":"max-hr","maxHrFormula":"220-age"}'
{
"success": true,
"tool": "heart-rate-zones",
"result": {
"age": 30,
"maxHrFormula": "220-age",
"maxHR": 190,
"formula": "max-hr",
"zones": [
{
"zone": 1,
"label": "Warm up",
"bpmMin": 95,
"bpmMax": 114
},
{
"zone": 2,
"label": "Fat burn",
"bpmMin": 114,
"bpmMax": 133
},
{
"zone": 3,
"label": "Cardio",
"bpmMin": 133,
"bpmMax": 152
},
{
"zone": 4,
"label": "Hard",
"bpmMin": 152,
"bpmMax": 171
},
{
"zone": 5,
"label": "Max effort",
"bpmMin": 171,
"bpmMax": 190
}
]
}
}/api/v1/tools/ideal-weight-calculator1 credit/callIdeal Weight Calculator
Estimate "ideal" body weight from height using four classic reference formulas (Devine, Robinson, Miller, Hamwi), originally developed for clinical drug-dosing reference rather than a personal fitness target. Informational estimate only, not medical advice — a healthy weight range depends on many individual factors beyond height.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sex | string (male | female) | Yes | Biological sex used by the formulas. |
height_cm | number | Yes | Height in centimeters (formulas are calibrated for adult stature). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/ideal-weight-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"sex":"male","height_cm":175}'
{
"success": true,
"tool": "ideal-weight-calculator",
"result": {
"heightIn": 68.9,
"devineKg": 70.5,
"robinsonKg": 68.9,
"millerKg": 68.7,
"hamwiKg": 72.3,
"averageKg": 70.1
}
}/api/v1/tools/pregnancy-due-date-calculator1 credit/callPregnancy Due Date Calculator
Estimate a pregnancy due date and current gestational age from the first day of the last menstrual period (LMP) using Naegele's rule (LMP + 280 days), optionally adjusted for a cycle length other than 28 days. Informational estimate only, not medical advice — actual due dates vary; consult your doctor or midwife for personalized prenatal care.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
lmp | string | Yes | First day of the last menstrual period, as an ISO date ("YYYY-MM-DD"). |
cycleLength | number | No (default 28) | Average menstrual cycle length in days (adjusts the due date relative to the 28-day cycle Naegele's rule assumes). |
today | string | No | ISO date ("YYYY-MM-DD") to compute gestational age as of; defaults to the current UTC date. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/pregnancy-due-date-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"lmp":"2026-01-01"}'
{
"success": true,
"tool": "pregnancy-due-date-calculator",
"result": {
"lmp": "2026-01-01",
"cycleLength": 28,
"dueDate": "2026-10-08",
"today": "2026-01-01",
"gestationalAgeWeeks": 0,
"gestationalAgeDays": 0
}
}/api/v1/tools/calorie-calculator1 credit/callCalorie Calculator
Estimate daily calorie targets to maintain, lose, or gain weight, based on TDEE (Mifflin-St Jeor BMR x activity factor) and a calorie deficit/surplus amount (default 500 kcal/day, a common rule-of-thumb for roughly 0.45kg/1lb of weight change per week). Informational estimate only, not medical or nutrition advice — consult a qualified professional before starting a weight-management plan.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
weight_kg | number | Yes | Body weight in kilograms. |
height_cm | number | Yes | Height in centimeters. |
age | number | Yes | Age in years. |
sex | string (male | female) | Yes | Biological sex used by the BMR formula. |
activity | string (sedentary | light | moderate | active | very-active) | No (default "moderate") | Activity level used for the TDEE calculation. |
adjustment | number | No (default 500) | Daily calorie deficit (for the "lose" target) / surplus (for the "gain" target), in kcal/day. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/calorie-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"weight_kg":80,"height_cm":180,"age":30,"sex":"male","activity":"moderate","adjustment":500}'
{
"success": true,
"tool": "calorie-calculator",
"result": {
"tdee": 2759,
"maintain": 2759,
"lose": 2259,
"gain": 3259,
"adjustment": 500
}
}/api/v1/tools/macro-calculator1 credit/callMacro Calculator
Split a daily calorie target into protein, carbohydrate, and fat grams using a percentage split (default 30% protein / 40% carbs / 30% fat) or a named goal preset, at 4 kcal/g for protein and carbs and 9 kcal/g for fat. Informational estimate only, not medical or nutrition advice.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
calories | number | Yes | Daily calorie target. |
protein_pct | number | No (default 30) | Percent of calories from protein (ignored if `goal` is set); protein_pct + carbs_pct + fat_pct must sum to 100. |
carbs_pct | number | No (default 40) | Percent of calories from carbohydrates (ignored if `goal` is set). |
fat_pct | number | No (default 30) | Percent of calories from fat (ignored if `goal` is set). |
goal | string (balanced | low-carb | high-protein | keto) | No | Optional named preset that overrides protein_pct/carbs_pct/fat_pct. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/macro-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"calories":2000,"protein_pct":30,"carbs_pct":40,"fat_pct":30}'
{
"success": true,
"tool": "macro-calculator",
"result": {
"calories": 2000,
"proteinPct": 30,
"carbsPct": 40,
"fatPct": 30,
"proteinG": 150,
"carbsG": 200,
"fatG": 66.7
}
}/api/v1/tools/tdee-calculator1 credit/callTDEE Calculator
Estimate Total Daily Energy Expenditure (TDEE) — Mifflin-St Jeor BMR multiplied by an activity factor. Informational estimate only, not medical or nutrition advice — consult a qualified professional for a personalized plan.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
weight_kg | number | Yes | Body weight in kilograms. |
height_cm | number | Yes | Height in centimeters. |
age | number | Yes | Age in years. |
sex | string (male | female) | Yes | Biological sex used by the BMR formula. |
activity | string (sedentary | light | moderate | active | very-active) | No (default "moderate") | Activity level: sedentary (little/no exercise, x1.2), light (1-3 days/week, x1.375), moderate (3-5 days/week, x1.55), active (6-7 days/week, x1.725), very-active (physical job or 2x/day training, x1.9). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/tdee-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"weight_kg":80,"height_cm":180,"age":30,"sex":"male","activity":"moderate"}'
{
"success": true,
"tool": "tdee-calculator",
"result": {
"bmr": 1780,
"activity": "moderate",
"activityFactor": 1.55,
"tdee": 2759
}
}/api/v1/tools/one-rep-max-calculator1 credit/callOne Rep Max Calculator
Estimate one-rep max (1RM) from a weight lifted for multiple reps, using the Epley formula (weight x (1 + reps/30)) and the Brzycki formula (weight x 36/(37 - reps); undefined at 37+ reps), plus an approximate percentage-of-1RM training table. Informational estimate only, not medical advice — actual one-rep max varies by exercise, fatigue, and technique.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
weight | number | Yes | Weight lifted, in the unit given by "unit". |
reps | number | Yes | Repetitions completed at that weight (1-36; the Brzycki formula is undefined at 37+). |
unit | string (kg | lb) | No (default "kg") | Unit the weight and results are reported in (the formulas are unit-agnostic). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/one-rep-max-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"weight":100,"reps":5,"unit":"kg"}'
{
"success": true,
"tool": "one-rep-max-calculator",
"result": {
"weight": 100,
"reps": 5,
"unit": "kg",
"epley": 116.67,
"brzycki": 112.5,
"average": 114.58,
"percentTable": [
{
"percent": 100,
"reps": 1,
"weight": 114.6
},
{
"percent": 95,
"reps": 2,
"weight": 108.9
},
{
"percent": 90,
"reps": 4,
"weight": 103.1
},
{
"percent": 85,
"reps": 6,
"weight": 97.4
},
{
"percent": 80,
"reps": 8,
"weight": 91.7
},
{
"percent": 75,
"reps": 10,
"weight": 85.9
},
{
"percent": 70,
"reps": 12,
"weight": 80.2
},
{
"percent": 65,
"reps": 15,
"weight": 74.5
},
{
"percent": 60,
"reps": 20,
"weight": 68.7
},
{
"percent": 55,
"reps": 24,
"weight": 63
},
{
"percent": 50,
"reps": 30,
"weight": 57.3
}
]
}
}/api/v1/tools/pace-calculator1 credit/callPace Calculator
Solve for pace, time, or distance given the other two (pace = time / distance), for running, walking, or cycling splits. Accepts time and pace as a plain number of seconds, "MM:SS", or "HH:MM:SS". Informational estimate only, not medical advice.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
solve | string (pace | time | distance) | Yes | Which value to compute from the other two. |
distanceUnit | string (km | mi) | No (default "km") | Distance unit pace is expressed per. |
distance | number | No | Distance covered (required unless solve is "distance"). |
time | string | No | Total time, as seconds, "MM:SS", or "HH:MM:SS" (required unless solve is "time"). |
pace | string | No | Pace per distance unit, as "MM:SS" or seconds (required unless solve is "pace"). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/pace-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"solve":"pace","distance":10,"time":"50:00","distanceUnit":"km"}'
{
"success": true,
"tool": "pace-calculator",
"result": {
"solve": "pace",
"distanceUnit": "km",
"distance": 10,
"timeSeconds": 3000,
"time": "50:00",
"paceSecondsPerUnit": 300,
"pace": "5:00/km"
}
}/api/v1/tools/calories-burned-calculator1 credit/callCalories Burned Calculator
Estimate calories burned during an activity using MET (Metabolic Equivalent of Task) values from the widely-cited Compendium of Physical Activities (Ainsworth et al., 2011): kcal = MET x 3.5 x weight(kg) / 200 x minutes. Informational estimate only, not medical advice — actual energy expenditure varies by individual fitness, terrain, and effort.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
activity | string (walking-slow | walking-moderate | walking-brisk | running-6mph | running-8mph | cycling-leisure | cycling-moderate | cycling-vigorous | swimming-moderate | swimming-vigorous | yoga | pilates | weight-training | hiking | dancing | basketball | tennis | jump-rope | hiit | stair-climbing) | Yes | Activity performed. |
weight_kg | number | Yes | Body weight in kilograms. |
minutes | number | Yes | Duration of the activity in minutes. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/calories-burned-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"activity":"running-6mph","weight_kg":70,"minutes":30}'
{
"success": true,
"tool": "calories-burned-calculator",
"result": {
"activity": "running-6mph",
"met": 9.8,
"weightKg": 70,
"minutes": 30,
"kcal": 360.2
}
}/api/v1/tools/protein-intake-calculator1 credit/callProtein Intake Calculator
Estimate daily protein intake (grams) from body weight and activity level, using general grams-per-kilogram guidelines (0.8 g/kg sedentary up to 2.2 g/kg for athletes/heavy strength training). Informational estimate only, not medical or nutrition advice — individual protein needs vary.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
weight_kg | number | Yes | Body weight in kilograms. |
activity | string (sedentary | light | moderate | active | athlete) | No (default "moderate") | Activity level. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/protein-intake-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"weight_kg":70,"activity":"active"}'
{
"success": true,
"tool": "protein-intake-calculator",
"result": {
"weightKg": 70,
"activity": "active",
"gramsPerKg": 1.6,
"proteinGramsPerDay": 112
}
}/api/v1/tools/sleep-calculator1 credit/callSleep Calculator
List bedtimes or wake times aligned to full 90-minute sleep cycles (plus ~14 minutes to fall asleep), given either a wake-up time ("wake-to-bed") or a bedtime ("bed-to-wake"). Informational estimate only, not medical advice — individual sleep-cycle length varies; consult a doctor about a persistent sleep problem.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
mode | string (wake-to-bed | bed-to-wake) | Yes | Whether "time" is a wake-up time or a bedtime. |
time | string | Yes | Time in 24-hour "HH:MM" format, e.g. "07:00". |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/sleep-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"mode":"wake-to-bed","time":"07:00"}'
{
"success": true,
"tool": "sleep-calculator",
"result": {
"mode": "wake-to-bed",
"time": "07:00",
"options": [
{
"cycles": 6,
"hours": 9,
"time": "21:46"
},
{
"cycles": 5,
"hours": 7.5,
"time": "23:16"
},
{
"cycles": 4,
"hours": 6,
"time": "00:46"
},
{
"cycles": 3,
"hours": 4.5,
"time": "02:16"
}
]
}
}/api/v1/tools/bac-calculator1 credit/callBAC Calculator
Estimate blood alcohol concentration (BAC%) using the Widmark formula: BAC% = (grams of alcohol / (body weight in grams x distribution ratio)) x 100, minus 0.015% per hour elapsed. Distribution ratio r = 0.68 for men, 0.55 for women; each standard drink is treated as ~14g of pure ethanol. THIS IS AN ESTIMATE ONLY — not medical advice, and never a substitute for a breathalyzer or blood test. Individual alcohol metabolism varies widely by body composition, food intake, medication, and other factors — never use it to decide whether it is safe to drive. If you have been drinking, do not drive; use a designated driver, taxi, or rideshare instead.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
drinks | number | Yes | Number of standard drinks consumed (~14g pure ethanol each). |
weight_kg | number | Yes | Body weight in kilograms. |
hours | number | Yes | Hours elapsed since the first drink. |
sex | string (male | female) | Yes | Biological sex (determines the Widmark distribution ratio). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/bac-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"drinks":3,"weight_kg":80,"hours":2,"sex":"male"}'
{
"success": true,
"tool": "bac-calculator",
"result": {
"drinks": 3,
"weightKg": 80,
"hours": 2,
"sex": "male",
"bacPercent": 0.047,
"overLegalLimitUS": false,
"note": "Estimate only — never use this to decide whether it is safe to drive. If you have been drinking, do not drive."
}
}/api/v1/tools/ovulation-calculator1 credit/callOvulation Calculator
Estimate ovulation date, fertile window, and next expected period from the first day of the last menstrual period (LMP) and average cycle length, using ovulation = LMP + (cycle length - 14) days and a fertile window from 5 days before ovulation through ovulation day. Informational estimate only, not medical advice — actual ovulation timing varies; consult your doctor for personalized guidance.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
lmp | string | Yes | First day of the last menstrual period, as an ISO date ("YYYY-MM-DD"). |
cycleLength | number | No (default 28) | Average menstrual cycle length in days. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/ovulation-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"lmp":"2026-01-01","cycleLength":28}'
{
"success": true,
"tool": "ovulation-calculator",
"result": {
"lmp": "2026-01-01",
"cycleLength": 28,
"ovulationDate": "2026-01-15",
"fertileWindowStart": "2026-01-10",
"fertileWindowEnd": "2026-01-15",
"nextPeriodDate": "2026-01-29"
}
}/api/v1/tools/body-type-calculator1 credit/callBody Type Calculator
Estimate a rough body-frame/somatotype leaning (ectomorph/mesomorph/endomorph) from a height-to-wrist-circumference ratio. This is an APPROXIMATION based on an informal frame-size heuristic, NOT a clinical Heath-Carter somatotype assessment — informational only, not medical advice.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sex | string (male | female) | Yes | Biological sex (frame-size thresholds differ by sex). |
height_cm | number | Yes | Height in centimeters. |
wrist_cm | number | Yes | Wrist circumference in centimeters (measured at the narrowest point, just past the wrist bone). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/body-type-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"sex":"male","height_cm":175,"wrist_cm":16}'
{
"success": true,
"tool": "body-type-calculator",
"result": {
"heightToWristRatio": 10.94,
"frameSize": "small",
"somatotype": "ectomorph-leaning",
"note": "Approximation only, not a clinical somatotype assessment."
}
}Finance Calculators
/api/v1/tools/loan-calculator1 credit/callLoan Calculator
Calculate the monthly payment, total interest, and total amount paid on a fixed-rate amortizing loan.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
principal | number | Yes | Loan amount. |
annualRate | number | Yes | Annual interest rate, percent. |
years | number | Yes | Loan term in years. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/loan-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"principal":200000,"annualRate":6,"years":30}'
{
"success": true,
"tool": "loan-calculator",
"result": {
"monthlyPayment": 1199.1,
"totalInterest": 231676.38,
"totalPaid": 431676.38
}
}/api/v1/tools/compound-interest-calculator1 credit/callCompound Interest Calculator
Calculate the final amount and interest earned on a principal under compound interest.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
principal | number | Yes | Principal amount. |
rate | number | Yes | Annual interest rate, percent. |
years | number | Yes | Number of years. |
compoundsPerYear | number | No (default 12) | Number of times interest compounds per year. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/compound-interest-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"principal":10000,"rate":5,"years":10,"compoundsPerYear":12}'
{
"success": true,
"tool": "compound-interest-calculator",
"result": {
"finalAmount": 16470.09,
"interestEarned": 6470.09
}
}/api/v1/tools/vat-calculator1 credit/callVAT Calculator
Calculate VAT (value-added tax) either way: `mode: "add"` treats `amount` as the net (pre-VAT) price and adds VAT on top; `mode: "remove"` treats `amount` as the gross (VAT-inclusive) price and extracts the VAT already included in it.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
amount | number | Yes | The amount to calculate VAT on (net if mode is "add", gross if mode is "remove"). |
vatRate | number | Yes | VAT rate, percent. |
mode | string (add | remove) | Yes | Whether `amount` is net (add VAT) or gross (remove VAT). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/vat-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"amount":100,"vatRate":20,"mode":"add"}'
{
"success": true,
"tool": "vat-calculator",
"result": {
"net": 100,
"vat": 20,
"gross": 120
}
}/api/v1/tools/salary-converter1 credit/callSalary Converter
Convert a salary/wage between pay periods (hourly, daily, weekly, monthly, annual), given the standard hours-per-week and weeks-per-year used to bridge hourly/daily figures to the rest.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
amount | number | Yes | Salary amount at `fromPeriod`. |
fromPeriod | string (hourly | daily | weekly | monthly | annual) | Yes | Pay period `amount` is denominated in. |
toPeriod | string (hourly | daily | weekly | monthly | annual) | Yes | Pay period to convert to. |
hoursPerWeek | number | No (default 40) | Standard hours worked per week. |
weeksPerYear | number | No (default 52) | Weeks worked per year. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/salary-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"amount":50000,"fromPeriod":"annual","toPeriod":"hourly","hoursPerWeek":40,"weeksPerYear":52}'
{
"success": true,
"tool": "salary-converter",
"result": {
"convertedValue": 24.04,
"breakdown": {
"hourly": 24.04,
"daily": 192.31,
"weekly": 961.54,
"monthly": 4166.67,
"annual": 50000
}
}
}/api/v1/tools/bill-splitter1 credit/callBill Splitter
Split a restaurant/group bill (with tip) evenly across a number of people.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
billAmount | number | Yes | Total bill amount before tip. |
numPeople | number | Yes | Number of people splitting the bill (whole number). |
tipPercent | number | Yes | Tip percentage to add. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/bill-splitter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"billAmount":100,"numPeople":4,"tipPercent":15}'
{
"success": true,
"tool": "bill-splitter",
"result": {
"perPerson": 28.75,
"totalWithTip": 115,
"tipAmount": 15
}
}/api/v1/tools/margin-calculator1 credit/callMargin Calculator
Calculate profit margin and markup from a cost and a selling price. Accepts the selling price as either `revenue` or `price` (aliases for the same value) — provide one of them.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
cost | number | Yes | Cost price. |
revenue | number | No | Selling price (alias: `price`). Provide this or `price`. |
price | number | No | Selling price (alias: `revenue`). Provide this or `revenue`. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/margin-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"cost":50,"revenue":80}'
{
"success": true,
"tool": "margin-calculator",
"result": {
"profit": 30,
"margin": 37.5,
"markup": 60
}
}/api/v1/tools/mortgage-calculator1 credit/callMortgage Calculator
Calculate the monthly mortgage payment for a home purchase, broken down into principal & interest, property tax, and insurance, given an optional down payment.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
homePrice | number | Yes | Total home purchase price. |
downPayment | number | No (default 0) | Down payment amount (must not exceed homePrice). |
annualRate | number | Yes | Annual mortgage interest rate, percent. |
years | number | Yes | Mortgage term in years. |
propertyTax | number | No (default 0) | Annual property tax. |
insurance | number | No (default 0) | Annual homeowners insurance. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/mortgage-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"homePrice":400000,"downPayment":80000,"annualRate":6.5,"years":30,"propertyTax":4800,"insurance":1200}'
{
"success": true,
"tool": "mortgage-calculator",
"result": {
"loanAmount": 320000,
"monthlyPrincipalAndInterest": 2022.62,
"monthlyTax": 400,
"monthlyInsurance": 100,
"monthlyPayment": 2522.62,
"totalInterest": 408142.36,
"totalPaid": 908142.36
}
}/api/v1/tools/investment-return-calculator1 credit/callInvestment Return Calculator
Project the future value of an initial investment plus fixed monthly contributions under a constant annual return.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
initial | number | Yes | Initial investment amount. |
monthlyContribution | number | No (default 0) | Fixed monthly contribution. |
rate | number | Yes | Expected annual rate of return, percent. |
years | number | Yes | Investment horizon in years. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/investment-return-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"initial":10000,"monthlyContribution":500,"rate":7,"years":20}'
{
"success": true,
"tool": "investment-return-calculator",
"result": {
"finalValue": 300850.72,
"totalContributed": 130000,
"totalGain": 170850.72
}
}/api/v1/tools/currency-converter1 credit/callCurrency Converter
Convert an amount between currencies using static, approximate exchange rates baked into this tool — NOT a live/real-time rate feed. Rates are periodically-updated snapshots, not current market rates.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
amount | number | Yes | Amount to convert. |
from | string (USD | EUR | GBP | JPY | CAD | AUD | CHF | CNY | INR | BRL | MXN) | Yes | Source currency code. |
to | string (USD | EUR | GBP | JPY | CAD | AUD | CHF | CNY | INR | BRL | MXN) | Yes | Target currency code. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/currency-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"amount":100,"from":"USD","to":"EUR"}'
{
"success": true,
"tool": "currency-converter",
"result": {
"result": 92,
"rate": 0.92,
"note": "Approximate static rate, not live."
}
}/api/v1/tools/simple-interest-calculator1 credit/callSimple Interest Calculator
Calculate simple (non-compounding) interest on a principal over a period of time.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
principal | number | Yes | Principal amount. |
rate | number | Yes | Annual interest rate, percent. |
time | number | Yes | Time period in years. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/simple-interest-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"principal":1000,"rate":5,"time":3}'
{
"success": true,
"tool": "simple-interest-calculator",
"result": {
"interest": 150,
"total": 1150
}
}/api/v1/tools/retirement-calculator1 credit/callRetirement Calculator
Project a retirement savings balance from a current balance, a fixed monthly contribution, and an expected annual rate of return.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
currentAge | number | Yes | Current age in years. |
retireAge | number | Yes | Planned retirement age (must be greater than currentAge). |
currentSavings | number | No (default 0) | Current retirement savings balance. |
monthlyContribution | number | No (default 0) | Fixed monthly contribution. |
annualRate | number | No (default 0) | Expected annual rate of return, percent. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/retirement-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"currentAge":30,"retireAge":65,"currentSavings":20000,"monthlyContribution":500,"annualRate":7}'
{
"success": true,
"tool": "retirement-calculator",
"result": {
"monthsToRetirement": 420,
"projectedBalance": 1130650.34
}
}/api/v1/tools/savings-goal-calculator1 credit/callSavings Goal Calculator
Project a savings goal, selected by `mode`: "months-to-goal" (given a fixed monthly contribution, how many months to reach the goal) or "required-monthly" (given a target number of months, the monthly contribution needed to reach the goal).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
mode | string (months-to-goal | required-monthly) | Yes | Which question to answer. |
goal | number | Yes | Target savings amount. |
currentSavings | number | No (default 0) | Current savings balance. |
annualRate | number | No (default 0) | Expected annual rate of return, percent. |
monthlyContribution | number | No | Fixed monthly contribution (required, "months-to-goal" mode). |
months | number | No | Target number of months (required, "required-monthly" mode). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/savings-goal-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"mode":"months-to-goal","goal":50000,"currentSavings":5000,"monthlyContribution":500,"annualRate":6}'
{
"success": true,
"tool": "savings-goal-calculator",
"result": {
"monthsToGoal": 72
}
}/api/v1/tools/amortization-schedule-calculator1 credit/callAmortization Schedule Calculator
Build a full amortization schedule for a fixed-rate loan: per-period payment, principal paid, interest paid, and remaining balance. Bounded to 1200 total periods (years × paymentsPerYear).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
principal | number | Yes | Loan amount. |
annualRate | number | Yes | Annual interest rate, percent. |
years | number | Yes | Loan term in years (whole number). |
paymentsPerYear | number | No (default 12) | Number of payments per year. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/amortization-schedule-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"principal":10000,"annualRate":6,"years":1,"paymentsPerYear":12}'
{
"success": true,
"tool": "amortization-schedule-calculator",
"result": {
"monthlyPayment": 860.66,
"totalInterest": 327.97,
"totalPaid": 10327.97,
"schedule": [
{
"period": 1,
"payment": 860.66,
"principalPaid": 810.66,
"interestPaid": 50,
"balance": 9189.34
},
{
"period": 2,
"payment": 860.66,
"principalPaid": 814.72,
"interestPaid": 45.95,
"balance": 8374.62
},
{
"period": 3,
"payment": 860.66,
"principalPaid": 818.79,
"interestPaid": 41.87,
"balance": 7555.83
},
{
"period": 4,
"payment": 860.66,
"principalPaid": 822.89,
"interestPaid": 37.78,
"balance": 6732.94
},
{
"period": 5,
"payment": 860.66,
"principalPaid": 827,
"interestPaid": 33.66,
"balance": 5905.94
},
{
"period": 6,
"payment": 860.66,
"principalPaid": 831.13,
"interestPaid": 29.53,
"balance": 5074.81
},
{
"period": 7,
"payment": 860.66,
"principalPaid": 835.29,
"interestPaid": 25.37,
"balance": 4239.52
},
{
"period": 8,
"payment": 860.66,
"principalPaid": 839.47,
"interestPaid": 21.2,
"balance": 3400.05
},
{
"period": 9,
"payment": 860.66,
"principalPaid": 843.66,
"interestPaid": 17,
"balance": 2556.39
},
{
"period": 10,
"payment": 860.66,
"principalPaid": 847.88,
"interestPaid": 12.78,
"balance": 1708.5
},
{
"period": 11,
"payment": 860.66,
"principalPaid": 852.12,
"interestPaid": 8.54,
"balance": 856.38
},
{
"period": 12,
"payment": 860.66,
"principalPaid": 856.38,
"interestPaid": 4.28,
"balance": 0
}
]
}
}/api/v1/tools/roi-calculator1 credit/callROI Calculator
Calculate return on investment (ROI) from an initial investment and a final value. When `years` is provided, also returns the annualized ROI (CAGR).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
initialInvestment | number | Yes | Amount initially invested (must be greater than 0). |
finalValue | number | Yes | Final/current value of the investment. |
years | number | No | Holding period in years, for annualized ROI. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/roi-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"initialInvestment":10000,"finalValue":15000,"years":5}'
{
"success": true,
"tool": "roi-calculator",
"result": {
"roi": 50,
"annualizedRoi": 8.4472
}
}/api/v1/tools/inflation-calculator1 credit/callInflation Calculator
Calculate the inflation-adjusted future value of an amount, and how much purchasing power that amount loses over the given number of years at a constant annual inflation rate.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
amount | number | Yes | Today's amount. |
annualInflationRate | number | Yes | Annual inflation rate, percent. |
years | number | Yes | Number of years. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/inflation-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"amount":1000,"annualInflationRate":3,"years":10}'
{
"success": true,
"tool": "inflation-calculator",
"result": {
"adjustedValue": 1343.92,
"purchasingPowerLoss": 255.91
}
}/api/v1/tools/credit-card-payoff-calculator1 credit/callCredit Card Payoff Calculator
Simulate paying off a credit card balance at a fixed monthly payment: months to payoff and total interest paid.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
balance | number | Yes | Current balance owed. |
apr | number | Yes | Annual percentage rate, percent. |
monthlyPayment | number | Yes | Fixed monthly payment. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/credit-card-payoff-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"balance":5000,"apr":19.99,"monthlyPayment":200}'
{
"success": true,
"tool": "credit-card-payoff-calculator",
"result": {
"monthsToPayoff": 33,
"totalInterest": 1521.02,
"totalPaid": 6521.02
}
}/api/v1/tools/debt-payoff-calculator1 credit/callDebt Payoff Calculator
Simulate paying off multiple debts with a shared monthly budget (every debt's minimum payment plus an optional extra amount), using the "avalanche" (highest APR paid off first) or "snowball" (smallest balance first) strategy. Every active debt's minimum is paid first each month; the leftover budget cascades to the top-priority debt. Up to 50 debts.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
debts | string | Yes | One "balance apr minPayment" set per line, e.g. "5000 22.9 150\n3000 18.5 90". |
extraPayment | number | No (default 0) | Extra amount applied on top of all minimum payments each month. |
strategy | string (avalanche | snowball) | No (default "avalanche") | Payoff order strategy. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/debt-payoff-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"debts":"5000 22 150\n3000 15 90","extraPayment":200,"strategy":"avalanche"}'
{
"success": true,
"tool": "debt-payoff-calculator",
"result": {
"monthsToPayoff": 22,
"totalInterest": 1460.56,
"totalPaid": 9460.56,
"debtCount": 2
}
}/api/v1/tools/sales-tax-calculator1 credit/callSales Tax Calculator
Calculate sales tax on a pre-tax amount and the resulting total.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
amount | number | Yes | Pre-tax amount. |
taxRate | number | Yes | Sales tax rate, percent. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/sales-tax-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"amount":250,"taxRate":8.875}'
{
"success": true,
"tool": "sales-tax-calculator",
"result": {
"tax": 22.19,
"total": 272.19
}
}/api/v1/tools/depreciation-calculator1 credit/callDepreciation Calculator
Build a yearly depreciation schedule for an asset using the "straight-line" or "declining-balance" (double-declining, floored at the salvage value) method. Bounded to 100 years.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
assetCost | number | Yes | Original cost of the asset. |
salvageValue | number | Yes | Estimated value at the end of its useful life (must not exceed assetCost). |
usefulLifeYears | number | Yes | Useful life in years (whole number). |
method | string (straight-line | declining-balance) | Yes | Depreciation method. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/depreciation-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"assetCost":50000,"salvageValue":5000,"usefulLifeYears":5,"method":"straight-line"}'
{
"success": true,
"tool": "depreciation-calculator",
"result": {
"method": "straight-line",
"schedule": [
{
"year": 1,
"depreciation": 9000,
"bookValue": 41000
},
{
"year": 2,
"depreciation": 9000,
"bookValue": 32000
},
{
"year": 3,
"depreciation": 9000,
"bookValue": 23000
},
{
"year": 4,
"depreciation": 9000,
"bookValue": 14000
},
{
"year": 5,
"depreciation": 9000,
"bookValue": 5000
}
],
"totalDepreciation": 45000,
"finalBookValue": 5000
}
}/api/v1/tools/commission-calculator1 credit/callCommission Calculator
Calculate sales commission from a sale amount and commission rate, with an optional base salary added on top.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
saleAmount | number | Yes | Total sale amount. |
commissionRate | number | Yes | Commission rate, percent. |
baseSalary | number | No (default 0) | Base salary to add on top of the commission. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/commission-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"saleAmount":20000,"commissionRate":5,"baseSalary":3000}'
{
"success": true,
"tool": "commission-calculator",
"result": {
"commission": 1000,
"total": 4000
}
}/api/v1/tools/break-even-calculator1 credit/callBreak-Even Calculator
Calculate the break-even point (units and revenue) given fixed costs, price per unit, and variable cost per unit.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
fixedCosts | number | Yes | Total fixed costs. |
pricePerUnit | number | Yes | Selling price per unit (must exceed variableCostPerUnit). |
variableCostPerUnit | number | Yes | Variable cost per unit. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/break-even-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"fixedCosts":10000,"pricePerUnit":50,"variableCostPerUnit":20}'
{
"success": true,
"tool": "break-even-calculator",
"result": {
"breakEvenUnits": 334,
"breakEvenRevenue": 16700
}
}/api/v1/tools/rent-vs-buy-calculator1 credit/callRent vs Buy Calculator
Compare the total cost of renting vs. buying a home over a number of years: monthly rent (with an optional annual increase) vs. a 30-year mortgage payment plus down payment, net of home equity built from paydown and appreciation. Assumes a fixed 30-year mortgage term regardless of the comparison horizon.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
monthlyRent | number | Yes | Current monthly rent. |
homePrice | number | Yes | Home purchase price. |
downPayment | number | Yes | Down payment amount (must not exceed homePrice). |
mortgageRate | number | Yes | Annual mortgage interest rate, percent. |
years | number | Yes | Comparison horizon in years. |
appreciationRate | number | No (default 0) | Expected annual home value appreciation, percent. |
rentIncreaseRate | number | No (default 0) | Expected annual rent increase, percent. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/rent-vs-buy-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"monthlyRent":2000,"homePrice":350000,"downPayment":70000,"mortgageRate":6.5,"years":10,"appreciationRate":3,"rentIncreaseRate":3}'
{
"success": true,
"tool": "rent-vs-buy-calculator",
"result": {
"monthlyMortgagePayment": 1769.79,
"totalRentCost": 275133.1,
"totalBuyCost": 49377.28,
"homeEquity": 232997.58,
"recommendation": "buy"
}
}Network & Web Tools
/api/v1/tools/what-is-my-ip2 credits/callWhat Is My IP
Report the caller IP address (supplied in "ip" — the site's own tool page and the metered API route both fill this in from the actual request's forwarded-for header before calling this endpoint) plus browser/OS/device details parsed from an optional User-Agent string. Does NOT perform IP geolocation — no city, region, or ISP lookup is included, only what the request itself reveals.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
ip | string | Yes | Caller IP address (IPv4 or IPv6) to report on. |
userAgent | string | No (default "") | Caller User-Agent string, if available. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/what-is-my-ip \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"ip":"203.0.113.42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}'
{
"success": true,
"tool": "what-is-my-ip",
"result": {
"ip": "203.0.113.42",
"ipVersion": 4,
"isPrivate": false,
"browser": {
"name": "Chrome",
"version": "120.0.0.0"
},
"os": {
"name": "Windows",
"version": "10"
},
"device": {}
}
}/api/v1/tools/dns-lookup2 credits/callDNS Lookup
Look up DNS records for a domain — A, AAAA, MX, TXT, NS, CNAME, SOA, CAA, or "ALL" of them — via node:dns. This RESOLVES the domain (a DNS query) but never connects to any address the records return, so it carries none of the SSRF risk the URL/host-based network tools do.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Domain name to look up (e.g. "example.com"). |
type | string (A | AAAA | MX | TXT | NS | CNAME | SOA | CAA | ALL) | No (default "A") | DNS record type to query, or "ALL" to query every supported type. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/dns-lookup \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"domain":"example.com","type":"A"}'
{
"success": true,
"tool": "dns-lookup",
"result": {
"domain": "example.com",
"type": "A",
"records": {
"A": [
"93.184.216.34"
]
}
}
}/api/v1/tools/website-status-checker2 credits/callWebsite Status Checker
Check whether a website is up — status code, response time, and the final URL after redirects — via an SSRF-guarded GET request. A site that is down, unreachable, or too slow is the tool's normal answer (`up: false`), not an error; a request refused because it targets a private/internal/loopback address IS an error, since that is a blocked request rather than an observation about the target site.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL to check (e.g. "https://example.com"). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/website-status-checker \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'
{
"success": true,
"tool": "website-status-checker",
"result": {
"up": true,
"statusCode": 200,
"statusText": "OK",
"responseTimeMs": 123,
"finalUrl": "https://example.com/",
"server": "ECS (nyb/1D2A)",
"contentType": "text/html; charset=UTF-8"
}
}/api/v1/tools/http-headers-viewer2 credits/callHTTP Headers Viewer
View the HTTP response headers for a URL via an SSRF-guarded GET request, plus a security-header summary (present/absent for HSTS, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, and Permissions-Policy).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL to fetch headers for (e.g. "https://example.com"). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/http-headers-viewer \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'
{
"success": true,
"tool": "http-headers-viewer",
"result": {
"statusCode": 200,
"finalUrl": "https://example.com/",
"headers": {
"content-type": "text/html; charset=UTF-8",
"server": "ECS (nyb/1D2A)"
},
"securityHeaders": {
"Strict-Transport-Security (HSTS)": {
"present": false,
"value": null
},
"Content-Security-Policy": {
"present": false,
"value": null
},
"X-Frame-Options": {
"present": false,
"value": null
},
"X-Content-Type-Options": {
"present": false,
"value": null
},
"Referrer-Policy": {
"present": false,
"value": null
},
"Permissions-Policy": {
"present": false,
"value": null
}
}
}
}/api/v1/tools/user-agent-parser2 credits/callUser Agent Parser
Parse a User-Agent string into browser, rendering engine, operating system, device, and CPU details, using the ua-parser-js library (a maintained signature database matched against real-world User-Agent strings) rather than ad hoc regular expressions.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
userAgent | string | Yes | The User-Agent string to parse. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/user-agent-parser \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}'
{
"success": true,
"tool": "user-agent-parser",
"result": {
"browser": {
"name": "Chrome",
"version": "120.0.0.0"
},
"engine": {
"name": "Blink",
"version": "120.0.0.0"
},
"os": {
"name": "Windows",
"version": "10"
},
"device": {},
"cpu": {
"architecture": "amd64"
}
}
}/api/v1/tools/whois-lookup2 credits/callWHOIS Lookup
Look up domain registration details (registrar, creation/update/expiry dates, name servers, status codes) via a hand-rolled TCP-43 WHOIS client: query whois.iana.org for the TLD's referral server, then query that server for the domain. WHOIS is a free-text protocol with no universal schema, so parsed-field completeness varies by registry — the raw response text is always included alongside the best-effort parsed fields.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Domain name to look up (e.g. "example.com"). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/whois-lookup \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"domain":"example.com"}'
{
"success": true,
"tool": "whois-lookup",
"result": {
"domain": "example.com",
"whoisServer": "whois.verisign-grs.com",
"raw": "Domain Name: EXAMPLE.COM\n...",
"parsed": {
"registrar": "RESERVED-Internet Assigned Numbers Authority",
"createdDate": "1995-08-14T04:00:00Z",
"updatedDate": "2026-01-16T18:26:50Z",
"expiresDate": "2026-08-13T04:00:00Z",
"nameServers": [
"A.IANA-SERVERS.NET",
"B.IANA-SERVERS.NET"
],
"status": [
"clientDeleteProhibited"
]
}
}
}/api/v1/tools/ssl-certificate-checker2 credits/callSSL Certificate Checker
Inspect the SSL/TLS certificate a host presents — subject, issuer, validity window, days until expiry, subject alternative names, serial number, signature algorithm, and chain length — via an SSRF-guarded TLS connection. The connection deliberately does not validate trust (an expired, self-signed, or hostname- mismatched certificate is exactly what this tool is for reporting on).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
host | string | Yes | Hostname to check (e.g. "example.com"). |
port | number | No (default 443) | TLS port to connect to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/ssl-certificate-checker \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"host":"example.com"}'
{
"success": true,
"tool": "ssl-certificate-checker",
"result": {
"subject": {
"CN": "example.com"
},
"issuer": {
"C": "US",
"O": "SSL Corporation",
"CN": "Cloudflare TLS Issuing ECC CA 3"
},
"validFrom": "May 31 21:39:12 2026 GMT",
"validTo": "Aug 29 21:41:26 2026 GMT",
"daysUntilExpiry": 43,
"san": [
"DNS:example.com",
"DNS:*.example.com"
],
"serialNumber": "1AA73FEA257BE3334B9A29552E6F878E",
"signatureAlgorithm": "ecdsa-with-SHA256",
"isExpired": false,
"isValidNow": true,
"chainLength": 1
}
}/api/v1/tools/ip-subnet-calculator2 credits/callIP Subnet Calculator
Calculate IPv4 subnet details — network address, broadcast address, usable host range, host counts, and wildcard/subnet mask — from a CIDR block (e.g. "192.168.1.0/24") or an IP + subnet mask pair. Handles the /31 (RFC 3021 point-to-point, 0 usable hosts by the classic count) and /32 (single host) edge cases.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
cidr | string | No | CIDR block, "a.b.c.d/nn" (e.g. "192.168.1.0/24"). Provide this OR both "ip" and "mask". |
ip | string | No | IPv4 address (used with "mask" instead of "cidr"). |
mask | string | No | Dotted-quad subnet mask (e.g. "255.255.255.0"), used with "ip" instead of "cidr". |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/ip-subnet-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"cidr":"192.168.1.0/24"}'
{
"success": true,
"tool": "ip-subnet-calculator",
"result": {
"cidr": "192.168.1.0/24",
"network": "192.168.1.0",
"broadcast": "192.168.1.255",
"firstHost": "192.168.1.1",
"lastHost": "192.168.1.254",
"usableHosts": 254,
"totalHosts": 256,
"wildcardMask": "0.0.0.255",
"subnetMask": "255.255.255.0",
"prefixLength": 24,
"ipClass": "C"
}
}/api/v1/tools/bandwidth-calculator2 credits/callBandwidth Calculator
Calculate file transfer time from a file size and a link speed. Uses a DECIMAL (1000-based) convention throughout: 1 KB/MB/GB/TB = 1000^n bytes, 1 Kbps/Mbps/Gbps = 1000^n bits/second, 8 bits = 1 byte — the same convention ISPs use to advertise speed, stated explicitly in every response (`convention` field) since a 1024-based (binary) reading of the same units gives a different number.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
fileSize | number | Yes | File size, in "fileSizeUnit"s. |
fileSizeUnit | string (KB | MB | GB | TB) | No (default "MB") | Unit "fileSize" is expressed in (decimal: 1 KB/MB/GB/TB = 1000^n bytes). |
speed | number | Yes | Link/connection speed, in "speedUnit"s. Must be greater than 0. |
speedUnit | string (Kbps | Mbps | Gbps) | No (default "Mbps") | Unit "speed" is expressed in (decimal: 1 Kbps/Mbps/Gbps = 1000^n bits/second). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/bandwidth-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"fileSize":1,"fileSizeUnit":"GB","speed":100,"speedUnit":"Mbps"}'
{
"success": true,
"tool": "bandwidth-calculator",
"result": {
"fileSize": 1,
"fileSizeUnit": "GB",
"fileSizeBytes": 1000000000,
"speed": 100,
"speedUnit": "Mbps",
"speedBitsPerSecond": 100000000,
"transferSeconds": 80,
"transferHuman": "1m 20s",
"convention": "Decimal (1000-based) convention: 1 KB/MB/GB/TB = 1000^n bytes; 1 Kbps/Mbps/Gbps = 1000^n bits/second; 8 bits = 1 byte. Some operating systems display file size using 1024-based binary units instead (labeled \"GB\" but meaning GiB) — this tool always uses the decimal convention above."
}
}/api/v1/tools/website-speed-test2 credits/callWebsite Speed Test
Measure page-load timing for a URL — TTFB, DOMContentLoaded, load, transferred bytes, request count, and a resource-type breakdown — via a real headless-Chrome navigation and the browser's own Navigation/Resource Timing APIs. This is lightweight navigation-timing, NOT a full Lighthouse audit (no performance score, no Core Web Vitals like LCP/CLS/INP). The target host is validated and pinned before Chrome ever launches — Chrome itself is locked to that one pinned IP via --host-resolver-rules, and every sub-resource request to any OTHER host is blocked outright, so the page cannot pivot this server's network position elsewhere.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL to test (e.g. "https://example.com"). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/website-speed-test \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'
{
"success": true,
"tool": "website-speed-test",
"result": {
"url": "https://example.com",
"finalUrl": "https://example.com/",
"ttfbMs": 88,
"domContentLoadedMs": 210,
"loadMs": 245,
"transferredBytes": 1534,
"requestCount": 1,
"resourceBreakdown": {
"script": 0,
"css": 0,
"image": 0,
"font": 0,
"other": 0
}
}
}Time & Date Tools
/api/v1/tools/world-clock1 credit/callWorld Clock
Show the local time in up to 50 IANA timezones for a given instant (default: now). DST-aware via Intl.DateTimeFormat — each zone's offset is looked up for that specific instant.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
at | string | No | ISO instant to compute local times for, must include "Z" or a UTC offset (e.g. "2026-06-01T12:00:00Z"). Defaults to the current time. |
zones | string | Yes | Comma-separated IANA timezone names, 1-50 (e.g. "America/New_York,Europe/London,Asia/Kolkata"). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/world-clock \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"at":"2026-06-01T12:00:00Z","zones":"UTC,America/New_York,Asia/Kolkata"}'
{
"success": true,
"tool": "world-clock",
"result": {
"at": "2026-06-01T12:00:00.000Z",
"zones": [
{
"zone": "UTC",
"offset": "+00:00",
"localTime": "2026-06-01T12:00:00"
},
{
"zone": "America/New_York",
"offset": "-04:00",
"localTime": "2026-06-01T08:00:00"
},
{
"zone": "Asia/Kolkata",
"offset": "+05:30",
"localTime": "2026-06-01T17:30:00"
}
]
}
}/api/v1/tools/timezone-converter1 credit/callTimezone Converter
Convert a wall-clock date and time from one IANA timezone to another. DST-aware via the built-in Intl.DateTimeFormat — the UTC offset for each zone is looked up for the specific instant being converted, never hardcoded, so results are correct on both sides of a Daylight Saving Time transition.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
datetime | string | Yes | Local wall-clock date and time with NO UTC offset, expressed in the "fromZone" timezone — "YYYY-MM-DDTHH:MM" or "YYYY-MM-DDTHH:MM:SS". |
fromZone | string | Yes | IANA timezone name the datetime is expressed in (e.g. "America/New_York"). |
toZone | string | Yes | IANA timezone name to convert into (e.g. "Europe/London"). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/timezone-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"datetime":"2026-06-01T12:00","fromZone":"America/New_York","toZone":"Europe/London"}'
{
"success": true,
"tool": "timezone-converter",
"result": {
"datetime": "2026-06-01T12:00",
"fromZone": "America/New_York",
"toZone": "Europe/London",
"fromOffset": "-04:00",
"toOffset": "+01:00",
"utc": "2026-06-01T16:00:00.000Z",
"convertedDatetime": "2026-06-01T17:00:00"
}
}/api/v1/tools/week-number-calculator1 credit/callWeek Number Calculator
Calculate the ISO-8601 week number and ISO week-year for a date. ISO weeks start Monday and a week belongs to the year containing its Thursday, so Jan 1-3 can fall in the PRIOR year's final week (e.g. W52/W53), and some years have a 53rd week.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
date | string | Yes | Date to compute the ISO week for, "YYYY-MM-DD". |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/week-number-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"date":"2026-01-01"}'
{
"success": true,
"tool": "week-number-calculator",
"result": {
"date": "2026-01-01",
"isoYear": 2026,
"isoWeek": 1,
"isoWeekString": "2026-W01"
}
}/api/v1/tools/day-of-week-calculator1 credit/callDay of Week Calculator
Get the weekday name for a date, plus its day-of-year and whether that year is a leap year. Pure UTC calendar math (Date.UTC/getUTCDay) — no local-timezone off-by-one.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
date | string | Yes | Date to look up, "YYYY-MM-DD". |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/day-of-week-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"date":"2026-07-17"}'
{
"success": true,
"tool": "day-of-week-calculator",
"result": {
"date": "2026-07-17",
"weekday": "Friday",
"weekdayIndex": 5,
"dayOfYear": 198,
"isLeapYear": false
}
}/api/v1/tools/countdown-timer1 credit/callCountdown Timer
Compute the time remaining until a target instant, from a reference instant (default: now). If the target has already passed, returns the elapsed time with isPast:true instead of erroring.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
target | string | Yes | Target ISO instant, must include "Z" or a UTC offset (e.g. "2026-12-31T00:00:00Z"). |
from | string | No | Reference ISO instant to count from. Defaults to the current time. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/countdown-timer \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"target":"2026-01-02T12:30:00Z","from":"2026-01-01T00:00:00Z"}'
{
"success": true,
"tool": "countdown-timer",
"result": {
"target": "2026-01-02T12:30:00.000Z",
"from": "2026-01-01T00:00:00.000Z",
"isPast": false,
"days": 1,
"hours": 12,
"minutes": 30,
"seconds": 0,
"totalSeconds": 131400
}
}/api/v1/tools/hours-calculator1 credit/callHours Calculator
Calculate hours worked between a start and end clock time, minus an optional unpaid break, as decimal hours and "H:MM". If "end" is earlier than "start" the shift is treated as crossing midnight (24 hours are added to "end") rather than as an error.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
start | string | Yes | Start time, 24-hour "HH:MM" (e.g. "09:00"). |
end | string | Yes | End time, 24-hour "HH:MM". If earlier than "start", treated as the next day (overnight shift). |
break | string | No (default "0") | Unpaid break to subtract: minutes (e.g. "30") or "H:MM"/"HH:MM" (e.g. "0:30"). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/hours-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"start":"09:00","end":"17:30","break":"0:30"}'
{
"success": true,
"tool": "hours-calculator",
"result": {
"start": "09:00",
"end": "17:30",
"breakMinutes": 30,
"overnight": false,
"workedMinutes": 480,
"decimalHours": 8,
"hhmm": "8:00"
}
}/api/v1/tools/time-duration-calculator1 credit/callTime Duration Calculator
Compute the duration between two ISO instants, broken into days/hours/minutes/seconds plus running totals in each unit. "end" must not be before "start".
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
start | string | Yes | Start ISO instant, must include "Z" or a UTC offset. |
end | string | Yes | End ISO instant, must include "Z" or a UTC offset; must not be before "start". |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/time-duration-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"start":"2026-01-01T00:00:00Z","end":"2026-01-02T12:30:00Z"}'
{
"success": true,
"tool": "time-duration-calculator",
"result": {
"start": "2026-01-01T00:00:00.000Z",
"end": "2026-01-02T12:30:00.000Z",
"days": 1,
"hours": 12,
"minutes": 30,
"seconds": 0,
"totalSeconds": 131400,
"totalMinutes": 2190,
"totalHours": 36.5,
"totalDays": 1.52
}
}/api/v1/tools/age-on-date-calculator1 credit/callAge on Date Calculator
Calculate calendar-correct age (years, months, days) at a reference date, given a birthdate. Handles leap-day (Feb 29) birthdays: in a non-leap reference year, the anniversary is reached the day after Feb 28.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
birthdate | string | Yes | Birth date, "YYYY-MM-DD". |
on | string | No | Reference date to compute the age at, "YYYY-MM-DD". Defaults to today (UTC). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/age-on-date-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"birthdate":"1990-06-15","on":"2026-07-17"}'
{
"success": true,
"tool": "age-on-date-calculator",
"result": {
"birthdate": "1990-06-15",
"on": "2026-07-17",
"years": 36,
"months": 1,
"days": 2
}
}/api/v1/tools/date-pattern-calculator1 credit/callDate Pattern Calculator
Date arithmetic from a start date: either "shift" mode adds/subtracts an interval (amount + unit: days/weeks/months/years — month/year shifts clamp the day-of-month if the target month is shorter, e.g. Jan 31 + 1 month -> Feb 28), or "next-weekday" mode lists the next N (1-1000) occurrences of a weekday strictly after the start date. UTC-safe throughout.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
date | string | Yes | Start date, "YYYY-MM-DD". |
mode | string (shift | next-weekday) | Yes | Which operation to perform. |
operation | string (add | subtract) | No (default "add") | "shift" mode only: whether to add or subtract the interval. |
amount | number | No | "shift" mode only (required): size of the interval to add/subtract, in "unit"s. |
unit | string (days | weeks | months | years) | No | "shift" mode only (required): unit the "amount" is expressed in. |
weekday | string (Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday) | No | "next-weekday" mode only (required): weekday name to search for. |
count | number | No (default 1) | "next-weekday" mode only: how many upcoming occurrences to list. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/date-pattern-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"date":"2026-07-17","mode":"shift","operation":"add","amount":30,"unit":"days"}'
{
"success": true,
"tool": "date-pattern-calculator",
"result": {
"date": "2026-07-17",
"mode": "shift",
"operation": "add",
"amount": 30,
"unit": "days",
"result": "2026-08-16"
}
}Unit Converters
/api/v1/tools/length-converter1 credit/callLength Converter
Convert a length/distance value between metric and imperial/nautical units. Units: mm, cm, m, km, in, ft, yd, mi, nautical-mile (base unit: meters).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | Numeric value to convert, expressed in the unit given by "from" (base unit: meters). |
from | string (mm | cm | m | km | in | ft | yd | mi | nautical-mile) | Yes | Unit to convert from. |
to | string (mm | cm | m | km | in | ft | yd | mi | nautical-mile) | Yes | Unit to convert to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/length-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":100,"from":"km","to":"mi"}'
{
"success": true,
"tool": "length-converter",
"result": {
"result": 62.13711922373339,
"from": "km",
"to": "mi",
"allUnits": {
"mm": 100000000,
"cm": 10000000,
"m": 100000,
"km": 100,
"in": 3937007.874015748,
"ft": 328083.9895013123,
"yd": 109361.32983377078,
"mi": 62.13711922373339,
"nautical-mile": 53.99568034557235
}
}
}/api/v1/tools/weight-converter1 credit/callWeight Converter
Convert a weight/mass value between metric and imperial units. Units: mg, g, kg, tonne, oz, lb, stone (base unit: kilograms).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | Numeric value to convert, expressed in the unit given by "from" (base unit: kilograms). |
from | string (mg | g | kg | tonne | oz | lb | stone) | Yes | Unit to convert from. |
to | string (mg | g | kg | tonne | oz | lb | stone) | Yes | Unit to convert to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/weight-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":1,"from":"lb","to":"kg"}'
{
"success": true,
"tool": "weight-converter",
"result": {
"result": 0.45359237,
"from": "lb",
"to": "kg",
"allUnits": {
"mg": 453592.37000000005,
"g": 453.59237,
"kg": 0.45359237,
"tonne": 0.00045359237000000004,
"oz": 16.000000014109585,
"lb": 1,
"stone": 0.07142857142857142
}
}
}/api/v1/tools/temperature-converter1 credit/callTemperature Converter
Convert a temperature between Celsius, Fahrenheit, Kelvin, and Rankine. Uses the real AFFINE formulas (additive offset + scale, not a pure factor) via a Celsius pivot, and rejects any value that is physically below absolute zero (-273.15°C / -459.67°F / 0 K / 0°R). Units: celsius, fahrenheit, kelvin, rankine.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | Temperature value to convert, expressed in the unit given by "from". |
from | string (celsius | fahrenheit | kelvin | rankine) | Yes | Unit to convert from. |
to | string (celsius | fahrenheit | kelvin | rankine) | Yes | Unit to convert to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/temperature-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":100,"from":"celsius","to":"fahrenheit"}'
{
"success": true,
"tool": "temperature-converter",
"result": {
"result": 212,
"from": "celsius",
"to": "fahrenheit"
}
}/api/v1/tools/data-storage-converter1 credit/callData Storage Converter
Convert a digital storage size between units, using the BINARY (1024-based, i.e. KiB/MiB/GiB/TiB) convention — NOT the decimal/1000-based convention some vendors use. 1 GB = 1024 MB here. Units: bit, byte, KB, MB, GB, TB (base unit: bytes).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | Numeric value to convert, expressed in the unit given by "from" (base unit: bytes). |
from | string (bit | byte | KB | MB | GB | TB) | Yes | Unit to convert from. |
to | string (bit | byte | KB | MB | GB | TB) | Yes | Unit to convert to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/data-storage-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":1,"from":"GB","to":"MB"}'
{
"success": true,
"tool": "data-storage-converter",
"result": {
"result": 1024,
"from": "GB",
"to": "MB",
"allUnits": {
"bit": 8589934592,
"byte": 1073741824,
"KB": 1048576,
"MB": 1024,
"GB": 1,
"TB": 0.0009765625
}
}
}/api/v1/tools/area-converter1 credit/callArea Converter
Convert an area value between metric and imperial units. Units: mm2, cm2, m2, hectare, km2, in2, ft2, acre, mi2 (base unit: square meters).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | Numeric value to convert, expressed in the unit given by "from" (base unit: square meters). |
from | string (mm2 | cm2 | m2 | hectare | km2 | in2 | ft2 | acre | mi2) | Yes | Unit to convert from. |
to | string (mm2 | cm2 | m2 | hectare | km2 | in2 | ft2 | acre | mi2) | Yes | Unit to convert to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/area-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":1,"from":"acre","to":"m2"}'
{
"success": true,
"tool": "area-converter",
"result": {
"result": 4046.8564224,
"from": "acre",
"to": "m2",
"allUnits": {
"mm2": 4046856422.4000006,
"cm2": 40468564.224,
"m2": 4046.8564224,
"hectare": 0.40468564224000003,
"km2": 0.0040468564224,
"in2": 6272640,
"ft2": 43560,
"acre": 1,
"mi2": 0.0015625
}
}
}/api/v1/tools/volume-converter1 credit/callVolume Converter
Convert a volume value between metric and US customary units. Units: ml, l, m3, tsp, tbsp, fl-oz-us, cup-us, pint-us, quart-us, gallon-us (base unit: liters).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | Numeric value to convert, expressed in the unit given by "from" (base unit: liters). |
from | string (ml | l | m3 | tsp | tbsp | fl-oz-us | cup-us | pint-us | quart-us | gallon-us) | Yes | Unit to convert from. |
to | string (ml | l | m3 | tsp | tbsp | fl-oz-us | cup-us | pint-us | quart-us | gallon-us) | Yes | Unit to convert to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/volume-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":1,"from":"gallon-us","to":"l"}'
{
"success": true,
"tool": "volume-converter",
"result": {
"result": 3.785411784,
"from": "gallon-us",
"to": "l",
"allUnits": {
"ml": 3785.411784,
"l": 3.785411784,
"m3": 0.0037854117839999997,
"tsp": 768.0000005843062,
"tbsp": 255.9999996753854,
"fl-oz-us": 127.9999998376927,
"cup-us": 16,
"pint-us": 8,
"quart-us": 4,
"gallon-us": 1
}
}
}/api/v1/tools/speed-converter1 credit/callSpeed Converter
Convert a speed value between metric, imperial, and nautical units. Units: mps, kmh, mph, knot, fps (base unit: meters per second).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | Numeric value to convert, expressed in the unit given by "from" (base unit: meters per second). |
from | string (mps | kmh | mph | knot | fps) | Yes | Unit to convert from. |
to | string (mps | kmh | mph | knot | fps) | Yes | Unit to convert to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/speed-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":100,"from":"kmh","to":"mps"}'
{
"success": true,
"tool": "speed-converter",
"result": {
"result": 27.7777778,
"from": "kmh",
"to": "mps",
"allUnits": {
"mps": 27.7777778,
"kmh": 100,
"mph": 62.13711927344309,
"knot": 53.995680435417434,
"fps": 91.13444160104986
}
}
}/api/v1/tools/time-unit-converter1 credit/callTime Unit Converter
Convert a time duration between common units, from milliseconds to years. Units: ms, s, min, hour, day, week, month, year (base unit: seconds).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | Numeric value to convert, expressed in the unit given by "from" (base unit: seconds). |
from | string (ms | s | min | hour | day | week | month | year) | Yes | Unit to convert from. |
to | string (ms | s | min | hour | day | week | month | year) | Yes | Unit to convert to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/time-unit-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":1,"from":"day","to":"hour"}'
{
"success": true,
"tool": "time-unit-converter",
"result": {
"result": 24,
"from": "day",
"to": "hour",
"allUnits": {
"ms": 86400000,
"s": 86400,
"min": 1440,
"hour": 24,
"day": 1,
"week": 0.14285714285714285,
"month": 0.03285488408386209,
"year": 0.002737907006988508
}
}
}/api/v1/tools/energy-converter1 credit/callEnergy Converter
Convert an energy value between SI, calorie, electrical, and imperial units. Units: J, kJ, cal, kcal, Wh, kWh, BTU, ft-lb (base unit: joules).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | Numeric value to convert, expressed in the unit given by "from" (base unit: joules). |
from | string (J | kJ | cal | kcal | Wh | kWh | BTU | ft-lb) | Yes | Unit to convert from. |
to | string (J | kJ | cal | kcal | Wh | kWh | BTU | ft-lb) | Yes | Unit to convert to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/energy-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":1,"from":"kWh","to":"J"}'
{
"success": true,
"tool": "energy-converter",
"result": {
"result": 3600000,
"from": "kWh",
"to": "J",
"allUnits": {
"J": 3600000,
"kJ": 3600,
"cal": 860420.6500956023,
"kcal": 860.4206500956022,
"Wh": 1000,
"kWh": 1,
"BTU": 3412.141641601248,
"ft-lb": 2655223.73745965
}
}
}/api/v1/tools/pressure-converter1 credit/callPressure Converter
Convert a pressure value between SI, imperial, and atmospheric units. Units: Pa, kPa, bar, psi, atm, mmHg, torr (base unit: pascals).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | Numeric value to convert, expressed in the unit given by "from" (base unit: pascals). |
from | string (Pa | kPa | bar | psi | atm | mmHg | torr) | Yes | Unit to convert from. |
to | string (Pa | kPa | bar | psi | atm | mmHg | torr) | Yes | Unit to convert to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/pressure-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":1,"from":"atm","to":"Pa"}'
{
"success": true,
"tool": "pressure-converter",
"result": {
"result": 101325,
"from": "atm",
"to": "Pa",
"allUnits": {
"Pa": 101325,
"kPa": 101.325,
"bar": 1.01325,
"psi": 14.695948782266708,
"atm": 1,
"mmHg": 759.9998940913052,
"torr": 760.0000024001973
}
}
}/api/v1/tools/angle-converter1 credit/callAngle Converter
Convert an angle value between degrees, radians, and other angular units. Units: degree, radian, gradian, arcminute, arcsecond, turn (base unit: degrees).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | Numeric value to convert, expressed in the unit given by "from" (base unit: degrees). |
from | string (degree | radian | gradian | arcminute | arcsecond | turn) | Yes | Unit to convert from. |
to | string (degree | radian | gradian | arcminute | arcsecond | turn) | Yes | Unit to convert to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/angle-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":180,"from":"degree","to":"radian"}'
{
"success": true,
"tool": "angle-converter",
"result": {
"result": 3.1415926535888237,
"from": "degree",
"to": "radian",
"allUnits": {
"degree": 180,
"radian": 3.1415926535888237,
"gradian": 200,
"arcminute": 10799.999978400001,
"arcsecond": 647999.9994816,
"turn": 0.5
}
}
}/api/v1/tools/fuel-economy-converter1 credit/callFuel Economy Converter
Convert a fuel-economy value between US mpg, UK (imperial) mpg, L/100km, and km/L. These units are RECIPROCALLY related (better economy = a smaller L/100km but a larger mpg/km-L), so every conversion pivots through L/100km via division rather than a linear scale factor. Units: mpg-us, mpg-uk, l-100km, km-l. "value" must be greater than 0.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | Fuel-economy value to convert, expressed in the unit given by "from". Must be greater than 0. |
from | string (mpg-us | mpg-uk | l-100km | km-l) | Yes | Unit to convert from. |
to | string (mpg-us | mpg-uk | l-100km | km-l) | Yes | Unit to convert to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/fuel-economy-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":30,"from":"mpg-us","to":"l-100km"}'
{
"success": true,
"tool": "fuel-economy-converter",
"result": {
"result": 7.84048611111111,
"from": "mpg-us",
"to": "l-100km"
}
}/api/v1/tools/frequency-converter1 credit/callFrequency Converter
Convert a frequency value between hertz-based units and revolutions per minute. Units: Hz, kHz, MHz, GHz, rpm (base unit: hertz).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | Numeric value to convert, expressed in the unit given by "from" (base unit: hertz). |
from | string (Hz | kHz | MHz | GHz | rpm) | Yes | Unit to convert from. |
to | string (Hz | kHz | MHz | GHz | rpm) | Yes | Unit to convert to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/frequency-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":1,"from":"GHz","to":"Hz"}'
{
"success": true,
"tool": "frequency-converter",
"result": {
"result": 1000000000,
"from": "GHz",
"to": "Hz",
"allUnits": {
"Hz": 1000000000,
"kHz": 1000000,
"MHz": 1000,
"GHz": 1,
"rpm": 59999999880
}
}
}/api/v1/tools/cooking-unit-converter1 credit/callCooking Unit Converter
Convert a cooking measurement between cups, tablespoons, teaspoons, fluid ounces, milliliters, and liters (US customary volume units). This converter is VOLUME-ONLY — it does not convert between weight and volume (e.g. grams of flour to cups), since that requires an ingredient-specific density. Units: ml, l, tsp, tbsp, fl-oz, cup (base unit: milliliters).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | Numeric value to convert, expressed in the unit given by "from" (base unit: milliliters). |
from | string (ml | l | tsp | tbsp | fl-oz | cup) | Yes | Unit to convert from. |
to | string (ml | l | tsp | tbsp | fl-oz | cup) | Yes | Unit to convert to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/cooking-unit-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":1,"from":"cup","to":"ml"}'
{
"success": true,
"tool": "cooking-unit-converter",
"result": {
"result": 236.5882365,
"from": "cup",
"to": "ml",
"allUnits": {
"ml": 236.5882365,
"l": 0.2365882365,
"tsp": 48,
"tbsp": 16,
"fl-oz": 8,
"cup": 1
}
}
}/api/v1/tools/shoe-size-converter1 credit/callShoe Size Converter
Convert a shoe size between US men's, US women's, UK, EU, and foot length in centimeters. Shoe sizing is NOT standardized across manufacturers (each brand's last shapes it differently), so these conversions are APPROXIMATE — typically within about half a size of any specific brand's own chart. This model pivots on foot length in cm, anchored at US men's 9 = UK 8.5 = EU 42.5 = 27 cm. Systems: us-mens, us-womens, uk, eu, cm.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | Shoe size (or foot length in cm, when "from"/"to" is "cm") to convert. |
from | string (us-mens | us-womens | uk | eu | cm) | Yes | Sizing system to convert from. |
to | string (us-mens | us-womens | uk | eu | cm) | Yes | Sizing system to convert to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/shoe-size-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":9,"from":"us-mens","to":"eu"}'
{
"success": true,
"tool": "shoe-size-converter",
"result": {
"result": 42.5,
"from": "us-mens",
"to": "eu"
}
}/api/v1/tools/power-converter1 credit/callPower Converter
Convert a power value between SI, mechanical, and thermal units. Units: W, kW, MW, hp, metric-hp, BTU-h (base unit: watts).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
value | number | Yes | Numeric value to convert, expressed in the unit given by "from" (base unit: watts). |
from | string (W | kW | MW | hp | metric-hp | BTU-h) | Yes | Unit to convert from. |
to | string (W | kW | MW | hp | metric-hp | BTU-h) | Yes | Unit to convert to. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/power-converter \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"value":1,"from":"hp","to":"W"}'
{
"success": true,
"tool": "power-converter",
"result": {
"result": 745.699872,
"from": "hp",
"to": "W",
"allUnits": {
"W": 745.699872,
"kW": 0.745699872,
"MW": 0.000745699872,
"hp": 1,
"metric-hp": 1.0138696659919546,
"BTU-h": 2544.434188302493
}
}
}Everyday Tools
/api/v1/tools/coin-flip1 credit/callCoin Flip
Flip one or more fair coins using node:crypto (never Math.random) for a uniform, unbiased 50/50 outcome each flip.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
count | number | No (default 1) | How many coins to flip. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/coin-flip \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"count":5}'
{
"success": true,
"tool": "coin-flip",
"result": {
"flips": [
"heads",
"tails",
"heads",
"heads",
"tails"
],
"heads": 3,
"tails": 2
}
}/api/v1/tools/dice-roller1 credit/callDice Roller
Roll one or more dice with a configurable number of sides using node:crypto (never Math.random) for a uniform, unbiased result on every roll. An optional flat modifier is added to the sum for a "total".
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sides | number | No (default 6) | Number of sides per die. |
count | number | No (default 1) | How many dice to roll. |
modifier | number | No (default 0) | Flat bonus/penalty added to the sum of all rolls to get "total". |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/dice-roller \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"sides":6,"count":2,"modifier":3}'
{
"success": true,
"tool": "dice-roller",
"result": {
"rolls": [
4,
6
],
"sum": 10,
"modifier": 3,
"total": 13
}
}/api/v1/tools/yes-or-no-generator1 credit/callYes or No Generator
Get a random "yes" or "no" answer (optionally including "maybe") using node:crypto (never Math.random) for a uniform, unbiased pick.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
includeMaybe | boolean | No (default false) | Include "maybe" as a third possible answer. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/yes-or-no-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"includeMaybe":false}'
{
"success": true,
"tool": "yes-or-no-generator",
"result": {
"answer": "yes"
}
}/api/v1/tools/random-color-picker1 credit/callRandom Color Picker
Pick one or more random colors in hex, rgb(), or hsl() format using node:crypto (never Math.random).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
format | string (hex | rgb | hsl) | No (default "hex") | Output color format. |
count | number | No (default 1) | How many colors to pick. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/random-color-picker \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"format":"hex","count":3}'
{
"success": true,
"tool": "random-color-picker",
"result": {
"colors": [
"#a3f2c1",
"#004488",
"#ff00aa"
]
}
}/api/v1/tools/emoji-search1 credit/callEmoji Search
Search an embedded, curated list of ~210 common emoji by name or keyword, matched case-insensitively as a substring against each emoji's name and keywords. Results are bounded to 60. "query" is required — a missing/empty query is rejected rather than returning an arbitrary "popular" subset.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Search text, matched case-insensitively against each emoji's name and keywords. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/emoji-search \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"query":"heart"}'
{
"success": true,
"tool": "emoji-search",
"result": {
"results": [
{
"emoji": "🥰",
"name": "Smiling Face with Hearts",
"keywords": [
"love",
"adore",
"crush"
]
},
{
"emoji": "😍",
"name": "Heart Eyes",
"keywords": [
"love",
"crush",
"adore"
]
},
{
"emoji": "❤",
"name": "Red Heart",
"keywords": [
"heart",
"love",
"red"
]
},
{
"emoji": "🧡",
"name": "Orange Heart",
"keywords": [
"heart",
"love",
"orange"
]
},
{
"emoji": "💛",
"name": "Yellow Heart",
"keywords": [
"heart",
"love",
"yellow"
]
},
{
"emoji": "💚",
"name": "Green Heart",
"keywords": [
"heart",
"love",
"green"
]
},
{
"emoji": "💙",
"name": "Blue Heart",
"keywords": [
"heart",
"love",
"blue"
]
},
{
"emoji": "💜",
"name": "Purple Heart",
"keywords": [
"heart",
"love",
"purple"
]
},
{
"emoji": "🖤",
"name": "Black Heart",
"keywords": [
"heart",
"love",
"black"
]
},
{
"emoji": "🤍",
"name": "White Heart",
"keywords": [
"heart",
"love",
"white"
]
},
{
"emoji": "🤎",
"name": "Brown Heart",
"keywords": [
"heart",
"love",
"brown"
]
},
{
"emoji": "💔",
"name": "Broken Heart",
"keywords": [
"heartbreak",
"sad",
"breakup"
]
},
{
"emoji": "💕",
"name": "Two Hearts",
"keywords": [
"heart",
"love"
]
},
{
"emoji": "💖",
"name": "Sparkling Heart",
"keywords": [
"heart",
"love",
"sparkle"
]
},
{
"emoji": "💗",
"name": "Growing Heart",
"keywords": [
"heart",
"love"
]
},
{
"emoji": "💘",
"name": "Heart with Arrow",
"keywords": [
"heart",
"love",
"cupid"
]
},
{
"emoji": "♥",
"name": "Heart Suit",
"keywords": [
"heart",
"card",
"suit"
]
}
]
}
}/api/v1/tools/random-quote-generator1 credit/callRandom Quote Generator
Get a random quote (optionally filtered by category) from a curated, embedded seed list, picked via node:crypto (never Math.random).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
category | string (motivational | wisdom | life | success | love | humor) | No | Restrict the pick to a single category. Omit to draw from all categories. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/random-quote-generator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"category":"motivational"}'
{
"success": true,
"tool": "random-quote-generator",
"result": {
"quote": "The only way to do great work is to love what you do.",
"author": "Steve Jobs",
"category": "motivational"
}
}/api/v1/tools/character-map1 credit/callCharacter Map
Look up full details for a single Unicode code point — accepts "U+2764", "0x2764", a bare decimal number, or a single literal character — returning its character, name (from the embedded emoji dataset or a curated named-character list; null if unknown, never a fabricated guess), code point, hex, decimal, HTML entities, UTF-8 bytes, and an approximate category. Alternatively, pass "category" to browse a curated set of common arrows, currency symbols, punctuation, math symbols, or Greek letters instead.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
query | string | No | A code point ("U+2764", "0x2764", a decimal number) or a single literal character. Ignored if "category" is set. |
category | string (arrows | currency | punctuation | math | greek) | No | Browse a curated set of common named characters instead of looking up "query". |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/character-map \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"query":"U+2764"}'
{
"success": true,
"tool": "character-map",
"result": {
"char": "❤",
"name": "Red Heart",
"codePoint": "U+2764",
"hex": "2764",
"decimal": 10084,
"htmlEntityDec": "❤",
"htmlEntityHex": "❤",
"utf8Bytes": [
226,
157,
164
],
"category": "Dingbat"
}
}/api/v1/tools/unit-price-calculator1 credit/callUnit Price Calculator
Calculate price per unit (price ÷ quantity). Optionally supply a second item (price2/quantity2) to compare which is cheaper per unit and by what percentage.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
price | number | Yes | Total price of item 1. |
quantity | number | Yes | Quantity of item 1 (must be greater than 0). |
unit | string | No | Unit label for item 1 (e.g. "oz", "kg", "ct"). Informational only. |
price2 | number | No | Total price of item 2, for a two-item comparison. |
quantity2 | number | No | Quantity of item 2 (must be greater than 0). Required together with price2. |
unit2 | string | No | Unit label for item 2. Informational only. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/unit-price-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"price":5.99,"quantity":12,"unit":"oz","price2":9.99,"quantity2":24,"unit2":"oz"}'
{
"success": true,
"tool": "unit-price-calculator",
"result": {
"price": 5.99,
"quantity": 12,
"unit": "oz",
"unitPrice": 0.4992,
"price2": 9.99,
"quantity2": 24,
"unit2": "oz",
"unitPrice2": 0.4163,
"comparison": {
"cheaperItem": "item2",
"savingsPercent": 16.61
}
}
}/api/v1/tools/weather1 credit/callWeather
Look up current conditions and a 3-day forecast for a city, powered by Open-Meteo (open-meteo.com) — a free, keyless weather API; no API key is required, read, or stored anywhere in this handler. Forecasts are estimates, not guarantees. Both Celsius/Fahrenheit and km/h/mph values are always included in the response since one upstream call already returns both temperature and wind speed; "units" is accepted for API ergonomics and echoed back but does not change which fields are present.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
city | string | Yes | City name to look up (e.g. "Paris" or "Austin"). |
units | string (metric | imperial) | No (default "metric") | Preferred unit convention, echoed back in the response (both unit systems are always included). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/weather \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"city":"Paris"}'
{
"success": true,
"tool": "weather",
"result": {
"location": {
"name": "Paris",
"country": "France",
"latitude": 48.8534,
"longitude": 2.3488
},
"units": "metric",
"current": {
"tempC": 22.5,
"tempF": 72.5,
"feelsLikeC": 21.8,
"feelsLikeF": 71.2,
"humidity": 55,
"windKph": 14.2,
"windMph": 8.8,
"condition": "Partly cloudy",
"weatherCode": 2
},
"forecast": [
{
"date": "2026-07-17",
"hiC": 25.1,
"hiF": 77.2,
"loC": 16.3,
"loF": 61.3,
"condition": "Partly cloudy",
"weatherCode": 2
}
],
"source": "Weather data from Open-Meteo (open-meteo.com). Forecasts are estimates."
}
}/api/v1/tools/love-calculator1 credit/callLove Calculator
FOR ENTERTAINMENT ONLY — computes a deterministic "love percentage" (0-100) for two names from a stable hash of the normalized, order-insensitive pair. The same two names always produce the same result. This is NOT a real or scientific measure of compatibility, and neither name is stored or logged.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
name1 | string | Yes | First name. |
name2 | string | Yes | Second name. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/love-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"name1":"Alice","name2":"Bob"}'
{
"success": true,
"tool": "love-calculator",
"result": {
"percentage": 13,
"message": "Not the strongest match on paper, but opposites can still attract.",
"disclaimer": "For entertainment purposes only. This result comes from a deterministic hash of the two names, not a scientific or real measure of compatibility."
}
}Construction & Home
/api/v1/tools/square-footage-calculator1 credit/callSquare Footage Calculator
Calculate the area of a room or surface — rectangle (length x width), circle (pi x radius^2), or triangle (0.5 x base x height) — reported in both square feet and square meters, with an optional cost estimate (estimatedCost = area in sq ft x costPerSqFt). Dimensions may be given in feet, meters, or inches via "unit"; all math is done in feet internally.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
shape | string (rectangle | circle | triangle) | Yes | Shape to measure. |
unit | string (ft | m | in) | No (default "ft") | Unit for every linear dimension below (length/width/height/radius). |
length | number | No | Rectangle length, or triangle base (required for those shapes). |
width | number | No | Rectangle width (required for rectangle). |
height | number | No | Triangle height, perpendicular to the base (required for triangle). |
radius | number | No | Circle radius (required for circle). |
costPerSqFt | number | No | Optional material/labor cost per square foot; if given, estimatedCost = area (sq ft) x costPerSqFt. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/square-footage-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"shape":"rectangle","unit":"ft","length":10,"width":12}'
{
"success": true,
"tool": "square-footage-calculator",
"result": {
"shape": "rectangle",
"unit": "ft",
"areaSqFt": 120,
"areaSqM": 11.15
}
}/api/v1/tools/concrete-calculator1 credit/callConcrete Calculator
Calculate concrete volume for a slab/footing (length x width x thickness) or a round column/pier (pi x (diameter/2)^2 x height), reported in cubic feet, cubic yards (cu ft / 27), and cubic meters, plus the number of premix bags needed. Assumes a 60lb bag yields ~0.45 cu ft and an 80lb bag yields ~0.60 cu ft (manufacturer-typical figures) — bag count is computed from the volume PLUS a waste percentage (default 5%, for spillage/over-dig).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
shape | string (slab | footing | column) | Yes | Slab/footing (rectangular prism) or column (round pier). |
unit | string (ft | m | in) | No (default "ft") | Unit for length/width/diameter/height. |
length | number | No | Slab/footing length (required when shape is "slab" or "footing"). |
width | number | No | Slab/footing width (required when shape is "slab" or "footing"). |
thickness_in | number | No | Slab/footing thickness/depth, always in inches (required when shape is "slab" or "footing"). |
diameter | number | No | Column diameter (required when shape is "column"). |
height | number | No | Column height (required when shape is "column"). |
bagSize | string (60lb | 80lb) | No (default "60lb") | Premix bag size used for the bag count. |
wastePercent | number | No (default 5) | Waste percentage added to the volume before computing bag count (spillage/over-dig). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/concrete-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"shape":"slab","unit":"ft","length":10,"width":10,"thickness_in":4}'
{
"success": true,
"tool": "concrete-calculator",
"result": {
"shape": "slab",
"unit": "ft",
"volumeCuFt": 33.33,
"volumeCuYd": 1.235,
"volumeCuM": 0.944,
"wastePercent": 5,
"volumeCuFtWithWaste": 35,
"bagSize": "60lb",
"bagYieldCuFt": 0.45,
"bags": 78
}
}/api/v1/tools/tile-calculator1 credit/callTile Calculator
Calculate the number of tiles needed for a floor: (area / tile area) x (1 + waste%), rounded UP. Waste defaults to 10% (a common allowance for cuts and breakage). Tile dimensions are always in inches; floor area may be given in square feet or square meters via "areaUnit". If "tilesPerBox" is given, also computes the number of boxes to buy (also rounded up).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
area | number | Yes | Floor area to tile. |
areaUnit | string (sqft | sqm) | No (default "sqft") | Unit "area" is given in. |
tileLength_in | number | Yes | Tile length in inches. |
tileWidth_in | number | Yes | Tile width in inches. |
wastePercent | number | No (default 10) | Waste/cut allowance percentage added before rounding up to a whole tile count. |
tilesPerBox | number | No | Tiles per box, if known; computes boxes needed. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/tile-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"area":120,"areaUnit":"sqft","tileLength_in":12,"tileWidth_in":12,"wastePercent":10}'
{
"success": true,
"tool": "tile-calculator",
"result": {
"area": 120,
"areaUnit": "sqft",
"areaSqFt": 120,
"tileLength_in": 12,
"tileWidth_in": 12,
"tileAreaSqFt": 1,
"wastePercent": 10,
"tiles": 132
}
}/api/v1/tools/mulch-gravel-calculator1 credit/callMulch/Gravel Calculator
Calculate mulch, gravel, or soil volume: area x depth, reported in cubic feet, cubic yards, and cubic meters, plus bags needed. Bag yields are common retail sizes: mulch ~2 cu ft/bag, gravel/decorative stone ~0.5 cu ft/bag (a 50lb bag), garden/topsoil ~0.75 cu ft/bag (a 40lb bag). Bag count is computed from the volume PLUS a waste percentage (default 10%).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
area | number | Yes | Area to cover. |
areaUnit | string (sqft | sqm) | No (default "sqft") | Unit "area" is given in. |
depth_in | number | Yes | Desired depth/thickness, always in inches. |
material | string (mulch | gravel | soil) | No (default "mulch") | Material — determines the bag yield used for the bag count. |
wastePercent | number | No (default 10) | Waste percentage added to the volume before computing bag count. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/mulch-gravel-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"area":100,"areaUnit":"sqft","depth_in":3}'
{
"success": true,
"tool": "mulch-gravel-calculator",
"result": {
"area": 100,
"areaUnit": "sqft",
"depth_in": 3,
"material": "mulch",
"volumeCuFt": 25,
"volumeCuYd": 0.926,
"volumeCuM": 0.708,
"wastePercent": 10,
"volumeCuFtWithWaste": 27.5,
"bagYieldCuFt": 2,
"bags": 14
}
}/api/v1/tools/paint-calculator1 credit/callPaint Calculator
Calculate gallons of paint needed: wall area (perimeter x height, minus door/window openings) x coats, divided by coverage per gallon, rounded UP to a whole gallon. Coverage defaults to 350 sq ft/gal (a common label figure for one coat of interior latex on primed drywall). Door openings default to 21 sq ft each (~3ft x 7ft); window openings default to 15 sq ft each (~3ft x 5ft) — both overridable.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
length | number | Yes | Room length. |
width | number | Yes | Room width. |
height | number | Yes | Wall height. |
unit | string (ft | m | in) | No (default "ft") | Unit for length/width/height. |
doors | number | No (default 0) | Number of door openings to subtract. |
windows | number | No (default 0) | Number of window openings to subtract. |
doorAreaSqFt | number | No (default 21) | Area per door opening, in square feet. |
windowAreaSqFt | number | No (default 15) | Area per window opening, in square feet. |
coats | number | No (default 2) | Number of coats of paint. |
coveragePerGallon | number | No (default 350) | Paint coverage per gallon, in square feet. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/paint-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"length":12,"width":10,"height":8,"doors":1,"windows":2,"coats":2}'
{
"success": true,
"tool": "paint-calculator",
"result": {
"length": 12,
"width": 10,
"height": 8,
"unit": "ft",
"perimeterFt": 44,
"wallAreaSqFt": 352,
"doors": 1,
"windows": 2,
"doorAreaSqFt": 21,
"windowAreaSqFt": 15,
"openingsSqFt": 51,
"paintableSqFt": 301,
"coats": 2,
"coveragePerGallon": 350,
"gallonsExact": 1.72,
"gallons": 2
}
}/api/v1/tools/stair-calculator1 credit/callStair Calculator
Calculate stair layout from total rise: number of steps = round(total rise / target riser), then actual riser = total rise / steps, total run = (steps - 1) x tread run, and stringer length = sqrt(rise^2 + run^2). Target riser defaults to 7.5in and tread run to 10in. Most U.S. residential codes require a riser between 4in and 8in (varies by jurisdiction) — a warning is returned if the ACTUAL computed riser falls outside that range; always verify against your local building code.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
totalRise_in | number | Yes | Total vertical rise (floor to floor), in inches. |
targetRiser_in | number | No (default 7.5) | Target riser height, in inches. |
treadRun_in | number | No (default 10) | Tread depth (horizontal run per step), in inches. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/stair-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"totalRise_in":45}'
{
"success": true,
"tool": "stair-calculator",
"result": {
"totalRise_in": 45,
"targetRiser_in": 7.5,
"numSteps": 6,
"actualRiser_in": 7.5,
"treadRun_in": 10,
"numTreads": 5,
"totalRun_in": 50,
"stringerLength_in": 67.27,
"codeCompliant": true,
"warning": null
}
}/api/v1/tools/roofing-calculator1 credit/callRoofing Calculator
Calculate roofing material from a building footprint: roof area = footprint x pitch multiplier, where multiplier = sqrt(1 + (pitch/12)^2) (pitch is rise-in-inches per 12in of run, e.g. 6 = a 6/12 pitch). Squares = roof area / 100; bundles = squares x bundlesPerSquare (default 3, the standard figure for 3-tab asphalt shingles — some architectural shingles use 4), rounded UP. A waste percentage (default 10%, for cuts/valleys/hips) is applied before the final bundle count.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
footprintArea | number | Yes | Building footprint (plan-view) area. |
areaUnit | string (sqft | sqm) | No (default "sqft") | Unit "footprintArea" is given in. |
pitch | number | Yes | Roof pitch as rise in inches per 12 inches of run (e.g. 6 for a "6/12" pitch). |
wastePercent | number | No (default 10) | Waste percentage for cuts, valleys, and hips. |
bundlesPerSquare | number | No (default 3) | Shingle bundles per 100-sq-ft "square". |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/roofing-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"footprintArea":1000,"areaUnit":"sqft","pitch":6}'
{
"success": true,
"tool": "roofing-calculator",
"result": {
"footprintArea": 1000,
"areaUnit": "sqft",
"pitch": 6,
"pitchMultiplier": 1.118,
"roofAreaSqFt": 1118,
"squares": 11.18,
"wastePercent": 10,
"squaresWithWaste": 12.298,
"bundlesPerSquare": 3,
"bundlesBeforeWaste": 34,
"bundles": 37
}
}/api/v1/tools/fence-calculator1 credit/callFence Calculator
Calculate fence materials from total run length: posts = ceil(length / postSpacing_ft) + 1, rails = sections x railsPerSection, and (if a picket width is given) pickets = ceil(length in inches / (picket width + gap)). Post spacing defaults to 8ft (typical for wood privacy fencing) and is always in feet regardless of the length unit. Also estimates bags of premix concrete (default 1 bag/post hole).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
length | number | Yes | Total fence run length. |
unit | string (ft | m | in) | No (default "ft") | Unit for "length" only — postSpacing_ft and picket dimensions are always in their stated units. |
postSpacing_ft | number | No (default 8) | Horizontal spacing between posts, in feet. |
railsPerSection | number | No (default 3) | Horizontal rails per section (e.g. 3 for a standard 3-rail fence). |
picketWidth_in | number | No | Picket width in inches; if given, computes picket count for a picket-style fence. |
picketGap_in | number | No (default 0) | Gap between pickets in inches (0 = butted pickets). |
concreteBagsPerPost | number | No (default 1) | Bags of premix concrete per post hole. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/fence-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"length":100,"unit":"ft","postSpacing_ft":8}'
{
"success": true,
"tool": "fence-calculator",
"result": {
"length": 100,
"unit": "ft",
"lengthFt": 100,
"postSpacing_ft": 8,
"sections": 13,
"posts": 14,
"railsPerSection": 3,
"rails": 39,
"picketGap_in": 0,
"concreteBagsPerPost": 1,
"concreteBags": 14
}
}Electrical & Science
/api/v1/tools/ohms-law-calculator1 credit/callOhm's Law Calculator
Solve Ohm's law and power: given any TWO of voltage (V), current (I), resistance (R), and power (P), computes the other two using V=IxR, P=VxI, P=I^2xR, and P=V^2/R (algebraically equivalent — whichever pair is given determines a unique circuit). You may give 3 or all 4 values; the extras are cross-checked against the pair used and rejected if they disagree. Rejects fewer than two known values and any division-by-zero combination (e.g. voltage with zero current). Estimate only — always verify with a meter before relying on a live circuit.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
voltage | number | No | Voltage in volts (V). |
current | number | No | Current in amps (A). |
resistance | number | No | Resistance in ohms. |
power | number | No | Power in watts (W). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/ohms-law-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"voltage":12,"current":2}'
{
"success": true,
"tool": "ohms-law-calculator",
"result": {
"voltage": 12,
"current": 2,
"resistance": 6,
"power": 24,
"given": [
"voltage",
"current"
],
"solved": [
"resistance",
"power"
]
}
}/api/v1/tools/voltage-drop-calculator1 credit/callVoltage Drop Calculator
Calculate voltage drop across a copper or aluminum conductor run. Single-phase: Vdrop = 2 x L x I x R_per_1000ft / 1000 (L = ONE-WAY length in feet; the "2x" accounts for the round trip out and back). Three-phase: Vdrop = sqrt(3) x L x I x R_per_1000ft / 1000 (no round-trip factor). R_per_1000ft comes from the standard AWG wire-resistance table at 20C (12 AWG copper = 1.588 ohm/1000ft); aluminum resistance = copper resistance x 1.64 (a commonly-used aluminum-vs-copper resistivity approximation). Reports the drop in volts, as a percent of source voltage, and the resulting end voltage. Estimate for planning only — verify against NEC (or your local electrical code) and consult a licensed electrician before wiring a real circuit; many codes recommend keeping the drop under 3%.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
current | number | Yes | Load current in amps. |
length_ft | number | Yes | ONE-WAY conductor run length in feet (the formula itself accounts for the round trip on single-phase). |
voltage | number | Yes | Source voltage in volts. |
awg | string (14 | 12 | 10 | 8 | 6 | 4 | 3 | 2 | 1 | 1/0 | 2/0 | 3/0 | 4/0) | Yes | Conductor size (American Wire Gauge). |
material | string (copper | aluminum) | No (default "copper") | Conductor material — determines the resistance-per-1000ft used. |
phase | string (single | three) | No (default "single") | Circuit phase — determines the voltage-drop formula factor (2 for single-phase round-trip, sqrt(3) for three-phase). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/voltage-drop-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"current":20,"length_ft":100,"voltage":120,"awg":"12","material":"copper","phase":"single"}'
{
"success": true,
"tool": "voltage-drop-calculator",
"result": {
"current": 20,
"length_ft": 100,
"voltage": 120,
"awg": "12",
"material": "copper",
"phase": "single",
"resistanceOhmsPer1000ft": 1.588,
"voltageDropV": 6.35,
"percentDrop": 5.29,
"endVoltageV": 113.65,
"recommendedMaxPercent": 3,
"withinRecommendedLimit": false
}
}/api/v1/tools/resistor-color-code-calculator1 credit/callResistor Color Code Calculator
Decode resistor color bands to a resistance ("to-value" mode: value = significant digits x multiplier, e.g. 4-band brown-black-red-gold = (1x10+0) x 100 = 1000ohm +/-5%), or encode a resistance to the nearest standard color bands ("to-color" mode). Supports 4-band (2 digits + multiplier + tolerance), 5-band (3 digits + multiplier + tolerance), and 6-band (5-band + temperature coefficient). Digit colors black..white = 0-9; multiplier black..white = x10^0..10^9, gold = x0.1, silver = x0.01; tolerance brown=1%, red=2%, green=0.5%, blue=0.25%, violet=0.1%, gray=0.05%, gold=5%, silver=10% (omitted = the standard "no band" +/-20%); 6-band temperature coefficient (ppm/K, IEC 60062): black=250, brown=100, red=50, orange=15, yellow=25, green=20, blue=10, violet=5, gray=1. Estimate only — always verify a resistor with a meter before relying on it in a circuit.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
mode | string (to-value | to-color) | Yes | Decode bands to a value ("to-value") or encode a value to the nearest bands ("to-color"). |
bands | string (4 | 5 | 6) | Yes | Number of color bands. |
digit1 | string (black | brown | red | orange | yellow | green | blue | violet | gray | white) | No | "to-value" mode: first significant-digit band color. |
digit2 | string (black | brown | red | orange | yellow | green | blue | violet | gray | white) | No | "to-value" mode: second significant-digit band color. |
digit3 | string (black | brown | red | orange | yellow | green | blue | violet | gray | white) | No | "to-value" mode: third significant-digit band color (5-band and 6-band only). |
multiplier | string (black | brown | red | orange | yellow | green | blue | violet | gray | white | gold | silver) | No | "to-value" mode: multiplier band color. |
tolerance | string (brown | red | green | blue | violet | gray | gold | silver) | No | "to-value" mode: tolerance band color; omit for the standard "no band" +/-20%. |
tempco | string (black | brown | red | orange | yellow | green | blue | violet | gray) | No | "to-value" mode, 6-band only: temperature-coefficient band color. |
resistance | number | No | "to-color" mode: resistance in ohms to encode. |
toleranceInput | number | No (default 5) | "to-color" mode: desired tolerance percent; mapped to the nearest standard tolerance color. |
tempcoInput | number | No (default 100) | "to-color" mode, 6-band only: desired temperature coefficient in ppm/K; mapped to the nearest standard tempco color. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/resistor-color-code-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"mode":"to-value","bands":"4","digit1":"brown","digit2":"black","multiplier":"red","tolerance":"gold"}'
{
"success": true,
"tool": "resistor-color-code-calculator",
"result": {
"mode": "to-value",
"bands": "4",
"digit1": "brown",
"digit2": "black",
"multiplier": "red",
"tolerance": "gold",
"resistanceOhms": 1000,
"resistanceDisplay": "1kΩ",
"tolerancePercent": 5,
"minOhms": 950,
"maxOhms": 1050
}
}/api/v1/tools/electricity-cost-calculator1 credit/callElectricity Cost Calculator
Calculate electricity cost from power draw and usage time: kWh = watts x hours / 1000; cost = kWh x rate per kWh, scaled to a day, a month (daysPerMonth, default 30), and a year (365 days). Power may be given in watts or kilowatts via "powerUnit".
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
power | number | Yes | Power draw of the device. |
powerUnit | string (W | kW) | No (default "W") | Unit "power" is given in. |
hoursPerDay | number | Yes | Hours the device runs per day. |
ratePerKWh | number | Yes | Electricity rate, in dollars per kWh. |
daysPerMonth | number | No (default 30) | Days per month the usage pattern applies (for the monthly figure). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/electricity-cost-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"power":100,"powerUnit":"W","hoursPerDay":5,"ratePerKWh":0.15,"daysPerMonth":30}'
{
"success": true,
"tool": "electricity-cost-calculator",
"result": {
"power": 100,
"powerUnit": "W",
"powerW": 100,
"hoursPerDay": 5,
"ratePerKWh": 0.15,
"kWhPerDay": 0.5,
"costPerDay": 0.075,
"daysPerMonth": 30,
"kWhPerMonth": 15,
"costPerMonth": 2.25,
"kWhPerYear": 182.5,
"costPerYear": 27.375
}
}/api/v1/tools/wire-size-calculator1 credit/callWire Size Calculator
Recommend the smallest standard AWG conductor (14 through 4/0) that satisfies BOTH ampacity (from a NEC Table 310.16-style 60C column ampacity table — copper: 14=15A, 12=20A, 10=30A, 8=40A, 6=55A, 4=70A, 3=85A, 2=95A, 1=110A, 1/0=125A, 2/0=145A, 3/0=165A, 4/0=195A; aluminum: 12=15A, 10=25A, 8=30A, 6=40A, 4=55A, 3=65A, 2=75A, 1=85A, 1/0=100A, 2/0=115A, 3/0=130A, 4/0=150A) AND a maximum voltage-drop percent (default 3%, a commonly-recommended target) — using the SAME formula as voltage-drop-calculator (2 x L x I x R_per_1000ft / 1000 single-phase, sqrt(3) x L x I x R_per_1000ft / 1000 three-phase, against the standard AWG resistance table). Iterates from the smallest gauge upward and returns the first size that clears both checks. Estimate for planning only — verify against NEC (or your local electrical code) and consult a licensed electrician before wiring a real circuit.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
current | number | Yes | Load current in amps. |
length_ft | number | Yes | ONE-WAY conductor run length in feet. |
voltage | number | Yes | Source voltage in volts. |
material | string (copper | aluminum) | No (default "copper") | Conductor material. |
phase | string (single | three) | No (default "single") | Circuit phase. |
maxVoltageDropPercent | number | No (default 3) | Maximum acceptable voltage drop, as a percent of source voltage. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/wire-size-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"current":20,"length_ft":100,"voltage":120,"material":"copper","phase":"single","maxVoltageDropPercent":3}'
{
"success": true,
"tool": "wire-size-calculator",
"result": {
"current": 20,
"length_ft": 100,
"voltage": 120,
"material": "copper",
"phase": "single",
"maxVoltageDropPercent": 3,
"recommendedAwg": "8",
"ampacityA": 40,
"resistanceOhmsPer1000ft": 0.628,
"voltageDropV": 2.51,
"percentDrop": 2.09,
"meetsAmpacity": true,
"meetsVoltageDropTarget": true
}
}/api/v1/tools/btu-calculator1 credit/callBTU Calculator
Estimate room cooling load in BTU/h ("room" mode: BTU/h = area(sq ft) x btuPerSqFt, a rule-of-thumb factor that defaults to 20 BTU/h per sq ft for cooling — actual sizing varies with ceiling height, insulation, climate, and sun exposure, so this is a rough estimate, not a substitute for a professional Manual J load calculation; adds 600 BTU/h for each occupant beyond the first two), or convert between BTU/h and watts ("convert" mode: 1 BTU/h = 0.29307107 W exactly).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
mode | string (room | convert) | Yes | Estimate a room's BTU/h ("room") or convert BTU/h<->watts ("convert"). |
area | number | No | "room" mode: room floor area. |
areaUnit | string (sqft | sqm) | No (default "sqft") | "room" mode: unit "area" is given in. |
btuPerSqFt | number | No (default 20) | "room" mode: BTU/h-per-square-foot rule-of-thumb factor. |
occupants | number | No (default 0) | "room" mode: number of regular occupants; adds 600 BTU/h for each beyond the first two. |
direction | string (btu-to-watts | watts-to-btu) | No | "convert" mode: conversion direction. |
value | number | No | "convert" mode: the value to convert (BTU/h or watts, per "direction"). |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/btu-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"mode":"room","area":300,"areaUnit":"sqft","btuPerSqFt":20}'
{
"success": true,
"tool": "btu-calculator",
"result": {
"mode": "room",
"area": 300,
"areaUnit": "sqft",
"areaSqFt": 300,
"btuPerSqFt": 20,
"occupants": 0,
"occupantAdjustmentBtu": 0,
"estimatedBtu": 6000
}
}/api/v1/tools/density-calculator1 credit/callDensity Calculator
Solve density (rho = mass / volume) for whichever of density, mass, or volume is missing, given the other two — density_g_cm3 = mass_g / volume_cm3. Provide any two; the third is computed (give all three and they are cross-checked for consistency). Density is also reported in kg/m^3 (1 g/cm^3 = 1000 kg/m^3). A zero volume (dividing by zero) is rejected, as is fewer than two known values.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
density_g_cm3 | number | No | Density in grams per cubic centimeter. |
mass_g | number | No | Mass in grams. |
volume_cm3 | number | No | Volume in cubic centimeters. |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/density-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"mass_g":100,"volume_cm3":50}'
{
"success": true,
"tool": "density-calculator",
"result": {
"density_g_cm3": 2,
"mass_g": 100,
"volume_cm3": 50,
"density_kg_m3": 2000,
"given": [
"mass_g",
"volume_cm3"
],
"solved": [
"density_g_cm3"
]
}
}/api/v1/tools/speed-distance-time-calculator1 credit/callSpeed Distance Time Calculator
Solve speed, distance, or time for whichever is missing, given the other two — speed = distance / time. Provide any two; the third is computed (give all three and they are cross-checked for consistency). Distance may be given in miles, kilometers, or meters; time in hours, minutes, or seconds; speed in mph, km/h, or m/s — every value is converted through a common internal unit (miles, hours, mph) so any combination of units works together. A zero time (dividing by zero) is rejected, as is fewer than two known values.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
distance | number | No | Distance covered. |
distanceUnit | string (mi | km | m) | No (default "mi") | Unit for "distance". |
time | number | No | Time elapsed. |
timeUnit | string (h | min | s) | No (default "h") | Unit for "time". |
speed | number | No | Speed. |
speedUnit | string (mph | kmh | ms) | No (default "mph") | Unit for "speed". |
Example
curl -X POST https://freeconvertingtools.com/api/v1/tools/speed-distance-time-calculator \
-H "Authorization: Bearer fct_your_key" \
-H "Content-Type: application/json" \
-d '{"distance":100,"distanceUnit":"mi","time":2,"timeUnit":"h"}'
{
"success": true,
"tool": "speed-distance-time-calculator",
"result": {
"distance": 100,
"distanceUnit": "mi",
"time": 2,
"timeUnit": "h",
"speed": 50,
"speedUnit": "mph",
"given": [
"distance",
"time"
],
"solved": [
"speed"
]
}
}Ready to Get Started?
Create an API key and start calling live endpoints in minutes.