Chat Transcript Formatter AI & Writing
Turn a copied chat conversation into clean markdown, JSON messages, or a plain transcript.
Chat Transcript Formatter is a free online tool that turn a copied chat conversation into clean markdown, JSON messages, or a plain transcript. It produces markdown, JSON messages array, Plain transcript, YAML.. It runs entirely in your web browser using plain JavaScript, so files are processed on your own device and never uploaded to a server. There is no sign-up, no file size limit imposed by the site, no watermark and no paid tier.
- Price
- Free — no account, no quota, no watermark
- Category
- AI & Writing
- Where it runs
- In your browser, on your device
- Files uploaded
- None
- Output
- Markdown, JSON messages array, Plain transcript, YAML
- Technology
- plain JavaScript
- Settings
- 3
- Works offline
- Yes, after the first visit
About Chat Transcript Formatter
Copying a conversation out of a chat interface gives you an undifferentiated wall of text with the speaker labels inline. This splits it back into turns and re-emits it as markdown for a document, as a `messages` array ready for an API call, or as a plain transcript. Multi-line answers stay attached to the turn they belong to, which is where naive line-splitting falls over.
How to use it
- Paste the text you want to run through chat transcript formatter.
- Set output as, speaker labels, comma separated and strip markdown from message bodies.
The 3 settings
| Setting | What it does | Default |
|---|---|---|
| Output as | Choose from 4: Markdown, JSON messages array, Plain transcript, YAML. | Markdown |
| Speaker labels, comma separated | Free text. | User, Assistant, System, Human, AI, Me, You, ChatGPT, Claude |
| Strip markdown from message bodies | On or off. Off by default. | Off |
Under the hood
| Runs on | plain JavaScript — runs the whole thing |
| Produces | Markdown, JSON messages array, Plain transcript, YAML |
| Controls | Output as, Speaker labels, comma separated, Strip markdown from message bodies |
Questions
What speaker labels does it recognize?
User, Assistant, System, Human, AI, Me, You and the common product names, all editable. A label is only treated as one when it starts a line and is followed by a colon, dash or em dash — so the word "user" inside a sentence is left alone.
Why does the JSON output use different role names?
Because the APIs expect `system`, `user` and `assistant`. Whatever label your transcript used is mapped onto those three, so the output can be sent as-is.
Can I use this to replay a conversation?
The JSON is the right shape for a messages array, yes. Do check it before sending — a transcript copied from a web interface can contain rendered artifacts and truncated code blocks that were never in the original.