ForHosting KIT · Text & AI

Text to table

Some information is written as a paragraph but actually wants to be a table — specs stacked in a sentence, options compared in prose, a list of names with attributes trailing after each one. This endpoint spots that structure hiding inside the prose and reformats it as a proper Markdown table, aligned columns and all.

● StablePer request + per 1,000 words$0.003
Use it from WebAPIEmailApp soonTelegram soon

Run this on our servers with your account. Free tools run in your browser; this one bills your KIT balance per the price above.

The tell-tale sign your paragraph should be a table

You can usually feel it before you can name it: a paragraph that lists three products and, for each, mentions a price and a size, or a sentence that walks through five settings and what each one does. That is tabular data wearing a paragraph's clothes, and reformatting it by hand means retyping every value into a grid, which is exactly the kind of mechanical work worth automating. text.to_table reads the prose, recognizes the repeating attributes, and lays them out as columns and rows.

What happens between input and output

POST /text/to-table analyzes the text for repeated entities with shared attributes — the same kind of thing mentioned several times, each mention carrying comparable details — and infers sensible column headers from what is actually present in the source. The result comes back as clean Markdown table syntax, pipes and alignment included, so it drops straight into a wiki page, a GitHub README, or any Markdown-rendering surface without reformatting.

Markdown tables as the connective tissue of technical writing

Markdown became the default language of technical documentation precisely because its table syntax is plain text that any tool can render, diff, or version-control without a binary format getting in the way. That same plainness is why it's tedious to type by hand — aligning pipes and dashes across many rows is fiddly work that nobody enjoys doing twice. The endpoint produces syntactically correct tables every time, so the tedium disappears without losing the format's portability.

Where prose genuinely resists becoming a table

Not every paragraph should become a table, and the endpoint reflects that honestly: text with no repeating structure, or comparisons that do not share a consistent set of attributes, will not produce a clean table because forcing one would misrepresent the source. The task is meant for prose that already has a hidden grid inside it, not for turning arbitrary narrative into rows for its own sake.

Fitting into a documentation workflow

Teams that maintain comparison pages, changelogs, or spec sheets often keep source notes as prose because that's how the information first arrives, then need it as a table for publishing. Running this asynchronously as part of a documentation build means the table gets generated the moment the source notes are updated, keeping the published table and the underlying notes from drifting apart.

Comparison pages from vendor notes

Convert prose comparing several tools or plans into a side-by-side Markdown table for a documentation or pricing page.

Changelog entries with mixed detail

Turn a paragraph describing several bug fixes, each with a version number and component, into a scannable release-notes table.

Spec sheets drafted in prose first

Reformat a product description that lists dimensions, weight, and material for several variants into a clean spec table for a README or wiki.

Meeting recaps with per-person updates

Convert a status-update paragraph mentioning several team members and their current tasks into a table for a project wiki.

How does the text to table API decide on column headers?

It infers headers from the attributes that actually repeat across the text — the kind of thing mentioned and the details attached to each mention — rather than using a fixed template.

What table format does it output?

Standard Markdown table syntax with pipes and alignment rows, ready to paste directly into any Markdown-rendering tool, wiki, or README.

Will it force a table out of text that isn't actually tabular?

No. If the source text doesn't have a repeating, comparable structure, the endpoint won't fabricate columns just to produce a table, since that would misrepresent the source.

Is there a free trial for converting text to table?

There's no free tier — free tiers get abused and slow everyone down. Access runs on a prepaid ForHosting KIT balance: top up from $10.00 (it never expires) and each request is charged at its published price, so a call with no balance returns HTTP 402. No subscription, no tokens, no invented credits, and a failed task is never charged.

What's the cost per conversion?

$0.003 per request plus $0.0135 per 1,000 words of source text. Failed conversions are never charged; the system retries automatically up to three times first.

Can I convert many documents to tables in bulk?

Yes, queue as many asynchronous requests as needed and collect each resulting table by webhook as it completes.

How do I retrieve the finished table?

Via a signed webhook, recommended for pipelines, or a signed link valid for 24 hours if you prefer to fetch it manually.

Can it output CSV instead of Markdown?

This endpoint is focused on Markdown table output for documentation use; for spreadsheet-style structured data, a JSON or structured-data endpoint is the better fit.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/text/to-table

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, and soon from our app, email and Telegram.

curl -X POST https://api.kit.forhosting.com/text/to-table \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"…"}'
{
  "text": "…"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "text.to_table",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.003
Per 1,000 words$0.0135

Published price — no tokens, no invented credits. A failed task is never charged.

max_tokens20000
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.
422task_failedThe task failed after 3 retries. You are never charged for it.

Read the full KIT documentation →