Media tools are next. Everything ships the same way: it runs in your tab, or it does not ship.
Data format converters
JSON, YAML, XML, CSV, TSV, TOML and Markdown tables, in every direction you actually need. Paste on the left, copy on the right, live while you type. The parsers are bundled into the page, so a production data export never touches a server.
37 tools. All in your browser.
Nothing you paste is uploaded, and once a tool has loaded it keeps working offline. Free, no signup.
JSON, YAML and TOML
6 tools
The three formats config files argue about, in every pairing. Going into YAML the hard part is quoting: a value like NO or 1.10 has to be quoted or it comes back as a boolean and a different number. Going into TOML the hard parts are the missing null and the table-shaped top level. Anchors and merge keys are resolved wherever the target has no equivalent, and comments only survive where the target format has them.
For the feeds, SOAP responses, sitemaps and enterprise exports that will outlive all of us. XML separates attributes from child elements and no other format does, so every converter has to invent a convention for that. Ours prefixes attributes with @_ in every direction, and the CSV pair adds the table view: the repeated element becomes rows on the way out, and rows become elements with names you pick on the way in.
Spreadsheet exports in both directions, now also from and to YAML and TOML. CSV has exactly one type, text, so anything that looks like a number, a date or a boolean is a guess until someone decides. Our converters show what they guessed and let you turn the guessing off, which is what you want for article numbers with leading zeros. The YAML and TOML directions also find the record list for you, even when it sits below metadata keys.
The three problems every CSV eventually runs into: Excel rewrites the values it opens, the delimiter depends on the locale of whoever double-clicks, and an .xlsx is a ZIP of XML that no text editor can help with. These pages solve them without a spreadsheet application. The workbook is built and unzipped in your tab, so a payroll export never becomes an upload.
Same rows, different destination. Markdown for a README or a pull request, HTML for a page, INSERT statements for a database you are seeding. The Markdown converter aligns numeric columns to the right and pads the cells so the raw file stays readable in a diff. Markdown to HTML goes the other way round for the whole document: a live preview, the HTML behind it, GitHub-style heading anchors and a rich-text copy that pastes formatted into Gmail or Word.
A Unix timestamp is one number that every platform spells differently: seconds in a shell and in Python, milliseconds in JavaScript and Java, nanoseconds in Go, and days since 1899 once it has been through a spreadsheet. The converter reads the unit off the digit count, shows the instant in your zone, in UTC and in any IANA zone with DST resolved, and prints the same conversion as code for seven languages. The 2038 limit and negative values are flagged rather than silently wrapped.
Not every conversion is between file formats. Sometimes the input is a column of field names that has to move from a Python model into a TypeScript interface, or a heading that needs to be a URL. The case converter takes identifiers or text one per line and shows every case at once, and it does the part most converters skip: XMLHttpRequest splits into xml_http_request rather than x_m_l, digits and umlauts are handled by option, and the input case is detected per line so an inconsistent list is visible before it is converted.
The request you need to reproduce usually arrives as a curl command, from Chrome's Copy as cURL, an API doc or a colleague's terminal. The converter parses it, multi-line backslashes, -H, --data-raw and the flags people actually use, and emits idiomatic fetch, Node.js, Python requests, PHP or HTTPie code. Flags it does not know are named instead of dropped, so nothing silently disappears between the command and the code.
The one input on this site that is not text yet. The speech to text page dictates through the speech recognition your browser already has, so the words appear while you speak and there is nothing to download. Chrome 139 and later can run that recogniser on the device. Where a browser has none, or when you switch it on, OpenAI's open Whisper large-v3-turbo runs inside the tab through WebGPU, fetched once from Hugging Face and cached, and that is also the engine for a dropped recording. The transcript is editable and downloads as plain text or as an SRT subtitle file with timestamps. Text to speech goes the other way with the voices the operating system already has, in every language, and with Kokoro, an open 82M model on the GPU, for English at podcast quality and a WAV download.
One picture tool so far. The background remover runs BiRefNet, an MIT-licensed segmentation model, on your GPU inside the tab. The photo is decoded, cut out and saved on your machine, and the only download is the model itself, 98 MB once from Hugging Face. The cutout keeps every original pixel, goes out as a PNG with an alpha channel or on a colour of your choice, and copies straight to the clipboard.
The parsers ship with the page, so a tool keeps working after you go offline.
Instant, as you type
Every tool runs the moment you type. No run button, no waiting, nothing to install.
Free forever, no signup
No account, no paywall, no trial that expires. All 110+ tools, free for everyone.
One page per direction, on purpose
JSON to YAML and YAML to JSON are not the same problem, so they are not the same page. Cramming both into one widget with a swap arrow makes the tool vaguer and the help text useless. All 26 converters share one parser and serialiser layer underneath, which is why they behave the same: same file drop, same error style, same live update while you type.
Why we do not upload your file
Data exports are the worst thing to hand to a random web service. A CSV of customers, an API response with tokens in it, a dump for a migration: none of that belongs in a paste box on someone else's server. Open your network tab, paste 30 MB of JSON, convert it, download the result, and the request list stays exactly as long as it was when the page finished loading.
What survives a format change, and what does not
What gets lost when you convert between data formats?
Everything the target format has no concept of, silently. Comments exist in YAML, TOML and XML but not in JSON or CSV, so they are gone the moment JSON is the intermediate step. TOML has no null, XML has no numbers or booleans (only text plus a schema), CSV has no nesting and no types at all, and JSON objects carry no attributes. Key order survives in most implementations but is not guaranteed by the JSON spec, and duplicate keys collapse. Decide which of these your file relies on before you round-trip it through anything.
Why do leading zeros and long numbers change during a conversion?
Because a converter that infers types reads 007 as the number 7 and a 19-digit id as a float that cannot represent it exactly. JSON numbers are IEEE 754 doubles in almost every implementation, so anything above 9007199254740991 loses its last digits, and CSV has no way to mark a field as text in the first place. The fix is to keep such columns as strings end to end: quote them in the source, tell the converter not to cast, and if a spreadsheet is involved, write the column as text rather than hoping.
How do I convert a file that is too large for a browser tab?
Stream it on the command line instead of loading it whole. jq --stream reads a huge JSON document event by event, Miller (mlr) converts between CSV, TSV, JSON and NDJSON without holding the file in memory, csvkit covers the CSV side with in2csv and csvjson, and yq does YAML and TOML. As a rule of thumb, anything past a few hundred megabytes belongs in a pipe, not in a text area, whatever the tool promises.
Is a JSON to YAML round trip lossless?
From JSON to YAML and back, usually yes, because YAML 1.2 is a superset of JSON and every JSON value has a YAML equivalent. The other direction is where it breaks: the YAML original may carry comments, anchors, merge keys, multiple documents in one file, tags and non-string keys, none of which exist in JSON, so the file that comes back is valid and no longer the same file. Never use a JSON round trip as a way to reformat YAML you care about.
Which format should I pick for an API, a config file and a data export?
JSON for APIs, because every language parses it identically and there is nothing to argue about; TOML or YAML for configuration a person edits, TOML when the structure is flat and YAML when it is deep or the ecosystem already expects it; CSV for anything that ends up in a spreadsheet, with UTF-8 and a documented delimiter. The one to avoid on purpose is CSV as an interchange format between programs, since the quoting rules in RFC 4180 are advisory and every writer bends them differently.