Turn a TXT file into a CSV file directly in your browser—fast, simple, and ready to download.
.txt transcript or subtitle export, click "Add Files" to browse, or paste lines directly into the editor. Parsing happens in your browser — nothing leaves your device. Batch is supported, so a whole folder of episode transcripts can be processed at once and downloaded as one CSV per source file.HH:MM:SS or [00:01:23] markers). Plain text becomes a one-column-per-row dump with an auto-generated index; timecoded text is parsed into separate start, end, and text columns.JOHN: or [NARRATOR] are preserved verbatim in the text column, and any mixed timestamp punctuation (.456, ,456, :456) is normalised. If your file has Windows-1252 mojibake at the source, re-save it as UTF-8 before converting — the output is always UTF-8..csv file downloads immediately as UTF-8 with comma separators and RFC 4180 quoting, ready to open in Excel, Google Sheets, Numbers, or any pandas / R / SQL import pipeline. No sign-up, no watermark, no email.A .txt transcript is a flat sequence of words — easy to read, awkward to analyse. Every line is just bytes; there's no structure a spreadsheet can hook into. CSV (Comma-Separated Values, documented in RFC 4180) gives each line a row and each field a column, so a transcript becomes a table the moment Excel or pandas opens it. The conversion is the prerequisite for almost any downstream text analytics:
start, end, and text columns, =LEN(text)/(end-start) flags any line that reads too fast.Ctrl+F find every mention of a name or term in seconds, and a timestamp column lets you jump back to the audio.COPY, MySQL LOAD DATA INFILE, BigQuery, Snowflake, and every BI tool consume CSV natively. Loading a year of customer-support call transcripts into a searchable database starts with a TXT-to-CSV pass.datasets, and Hugging Face loaders read CSV in one line. Researchers building speech-to-text fine-tuning sets, summarisation benchmarks, or speaker-diarisation datasets pair audio segments with text cells from the CSV..txt. In a spreadsheet they can sort by line length, filter by speaker, freeze the timestamp column, redact PII with find-and-replace, and tab through rows with the keyboard.Need related tooling? Run the output through CSV to JSON when you want a list of objects instead of a table, audit length with Word Counter, or diff two versions of the transcript using Text Diff. To normalise UPPER/lower casing before delivery, Text Case Converter takes the same files.
| Property | TXT (plain text / transcript) | CSV |
|---|---|---|
| Standardised by | No formal standard — generic plain text | RFC 4180 (informational) |
| File extension | .txt |
.csv |
| MIME type | text/plain |
text/csv |
| Structure | Free-form lines separated by newlines | One row per record, comma-separated fields |
| Timestamps | None by default; sometimes ad-hoc HH:MM:SS markers |
Free-form column (kept as text by default) |
| Header line | Not applicable | First row is column names by convention |
| Quoting rules | None — every byte is data | Fields with commas, quotes, or CRLF wrapped in "…"; embedded " doubled to "" |
| Encoding | Anything — often UTF-8, sometimes Windows-1252 / ANSI / Shift-JIS | UTF-8 recommended; legacy tools sometimes default to CP1252 |
| Line endings | LF (Unix) or CRLF (Windows) — accepted either way | CRLF per RFC 4180; LF accepted by most parsers |
| Tooling | Text editors, word processors, grep, awk | Excel, Google Sheets, pandas, SQL COPY, R, jq |
| Typical use | Notes, scripts, raw transcripts, READMEs | Spreadsheets, ETL pipelines, database imports |
| Your TXT looks like… | Mode used | What the converter produces |
|---|---|---|
| One paragraph or sentence per line, no timestamps | Plain text | A single text column with a 1-based index column added; one row per line, blank lines skipped |
00:01:23 Caption text (start only) |
Timecoded — start only | Columns index, start, text; end is left blank (use next start − 1 in a spreadsheet if you need durations) |
00:01:23 --> 00:01:26 Caption text |
Timecoded — start and end | Columns index, start, end, text — exact 1:1 mapping |
[00:01:23] Speaker: line |
Timecoded with speaker | Columns index, start, speaker, text — speaker label split out from the body |
Mixed . / , / : millisecond separators |
Any timecoded mode | All normalised to HH:MM:SS,mmm in the output (SRT-style comma separator) |
All-caps speaker block headings (JOHN: on its own line) |
Plain or timecoded | Treated as a separate speaker column when the next non-empty line is dialogue |
Yes. In plain-text mode the converter emits two columns: index (a 1-based row counter it generates) and text (the original line, unchanged). That's already enough to filter, sort by length, run =LEN(text) audits, redact PII, or feed into a translation tool. If you need timestamps you'll have to add them yourself in the spreadsheet — there's nothing in a plain .txt file the converter can use to invent timings, and we don't want to fabricate data.
It depends on what the parser detected in your input. Plain text → index, text. Timecoded text with one timestamp per line → index, start, text. Timecoded text with start/end pairs → index, start, end, text. If a speaker label is present and consistently formatted (JOHN: or [NARRATOR]), an extra speaker column is added. The first row of the CSV is always a header naming the columns.
No. The converter follows RFC 4180 quoting rules: any field containing a comma, a double quote, or a CR/LF is wrapped in double quotes, and embedded double quotes are escaped by doubling (" → ""). Modern Excel, Google Sheets, LibreOffice Calc, Numbers, and the Python csv module all parse this correctly. If you open the raw .csv in a text editor and see fields wrapped in quotes, that's not a bug — it's the spec.
Almost always an encoding mismatch on Excel's side, not on the converter's. The output is UTF-8 without a byte-order mark, which is what Google Sheets, LibreOffice, Numbers, pandas, and Excel for Mac all autodetect. Excel on Windows still defaults to CP1252 when you double-click a .csv. Two fixes: (1) in Excel use Data → From Text/CSV and pick 65001: Unicode (UTF-8) in the dialog; or (2) re-save the file as UTF-8 with BOM in a text editor — the EF BB BF prefix flips Excel into UTF-8 mode automatically.
Each non-empty line of your .txt becomes one CSV row by default. Multiple consecutive blank lines collapse to a single row separator (we don't emit empty rows). If your TXT was exported from a subtitle editor and uses blank lines as cue separators, that structure is preserved — each cue becomes one row, with multi-line cues joined into the text column using a single space.
Both \r\n (Windows) and \n (Unix/Mac) line endings are accepted; the parser normalises both to a single newline before splitting. Tabs inside a line are preserved as literal tabs in the text column. Leading and trailing whitespace on each line is trimmed (Excel and pandas both strip it on import anyway). Zero-width and non-breaking space characters are kept verbatim — they sometimes carry meaning in Asian scripts and we don't want to lose them.
The converter outputs one row per line in the source TXT. If you want per-word or per-sentence rows, do the split after import: in Excel, =TEXTSPLIT(A2, " ") (Microsoft 365) gives one cell per word; in pandas, df["text"].str.split().explode() produces one row per word; for sentence boundaries, nltk.sent_tokenize is the standard. Splitting at conversion time would make assumptions about your language and punctuation we'd rather leave to a tool that knows your domain.
Yes. UTF-8 encoding, comma delimiters, double-quote text qualifier, CRLF line endings, and a header row in line 1 is the most widely supported CSV dialect on the web. Google Sheets opens it directly from Drive; Excel opens it with Data → From Text/CSV; LibreOffice and Numbers double-click open; pandas.read_csv("file.csv") with no arguments works; psql \copy table FROM 'file.csv' WITH (FORMAT csv, HEADER true) works in Postgres.
No. The TXT is parsed and the CSV is generated entirely in your browser session — no upload, no account, no watermark, no rate limit. Closing the tab discards everything; we never see the contents of your file. That matters for transcripts of medical, legal, or HR conversations where confidentiality is non-negotiable.