Extract List Column
Pull one column out of delimited data - CSV (with quoted fields), TSV, semicolon, pipe, or whitespace. 1-based, 0-based, or -1 from the end. Free, offline, client-side, instant, secure.
- Runs in your browser
- Nothing uploaded
- Free, no sign-up
Pull one column out of multi-column text - comma-, tab-, semicolon-, pipe-, or
space-separated. The CSV path uses an RFC 4180 parser so quoted fields containing
commas survive intact. Indexing is 1-based by default with -1 for last.
How to Use Extract List Column
- Paste your data into the input. Output updates live (200 ms debounce).
- Pick the column separator. The four CSV-style delimiters (comma, tab, semicolon, pipe) use a proper RFC 4180 parser - quoted fields containing the delimiter pass through intact. The two whitespace modes (single space, whitespace run) use plain split.
- Type the column number. By default
1is the first column. Negative numbers count from the right:-1is the last column,-2is the second-to-last. Turn off the "1-based" checkbox if you want 0-based indexing (programmer-style). - Toggle the value options. "Trim whitespace" cleans leading/trailing spaces on each extracted value. "Remove empty values" drops any extracted cell that's empty after trimming.
- Read the stats line. Total rows, extracted count, blank rows skipped, rows that lacked that column, and empty values removed. Each category is separately tracked so you know exactly what happened to your input.
- Copy or download. Ctrl/Cmd + Enter copies. Download saves
extracted-column.txt.
Frequently Asked Questions
What’s the difference between 1-based and 0-based indexing?
1-based starts at 1 (1 = first column, 2 = second) – the convention used by Excel, Google Sheets, awk, and SQL SUBSTRING. 0-based starts at 0 (0 = first column) – the convention used by C, Python, JavaScript, and most programming languages. The default is 1-based to match spreadsheet expectations; turn it off if you’re scripting against the output.
What are negative indices?
They count from the right: -1 = last column, -2 = second-to-last, etc. This works in both 1-based and 0-based modes (negative numbers are the same in either convention). Useful for extracting the last column without counting how many there are. Doesn’t apply if the row has fewer columns than abs(N).
How does the CSV parser handle quoted fields?
Per RFC 4180. A field can be wrapped in "…" and the delimiter doesn’t end it inside the quotes. A literal " inside a quoted field is escaped as "". So "hello, world" is one field; "he said ""hi""" decodes to he said "hi". Embedded newlines in quoted fields are not supported by this tool (each line is treated as one row); use a dedicated CSV tool if you need that.
What happens if rows have different numbers of columns?
Rows that don’t have the requested column are skipped and counted separately as “rows lacked that column” in the stats line. Blank rows (whitespace-only) are skipped and counted as “blank rows”. This way you can see whether your input was uneven or just sparse.
What about whitespace-separated data?
Two modes for that: “Single space” splits on each literal space character (so two spaces in a row produce an empty field between them); “Whitespace run” splits on s+ (any sequence of whitespace becomes one separator). Use the latter for command-output-style logs where columns are aligned with variable spacing. Neither mode treats quoting as special – if you have quoted fields, switch to one of the four character delimiters.
Can I process large lists?
Yes. The parser is O(n) over input characters and the extraction is O(rows). 100,000 rows × 10 columns finishes in well under a second on a modern laptop. The 200 ms input debounce keeps typing-while-editing smooth even on large pasted inputs.
Is my data uploaded?
No. The page loads three static files (HTML, CSS, JS) and then runs entirely in your browser. Your data never leaves the device – no fetch, no XHR, no analytics, no cookies. You can disconnect from the internet after the page loads and the tool still works.
Is this tool free?
Yes – free, unlimited, no signup, no watermark. The extracted column is yours to use anywhere. Attribution to is appreciated but not required.
Related Tools
Extract Unique List Items →
Dedupe a list, find duplicates, or keep only singles - newline/comma/tab/pipe input, 5 modes,…
Add Bullets to List Item →
Add bullet points to list items instantly. Choose from presets or use custom bullets.…
Add List Prefix - Prepend Text →
Add List Prefix list items instantly. Bullets, numbers, arrows, checkboxes, or custom text. Free,…
Add Suffix to List Items →
Add suffix to list items instantly. Periods, commas, punctuation, or custom text. Free, secure,…
Alphabetize List Sort Items Online | A-Z →
Alphabetize list items instantly. Sort A-Z or Z-A, case-sensitive or not. Remove duplicates option.…
Append List Items - Merge Lists →
Append and merge lists instantly. Combine multiple lists with duplicate removal. Free, secure, client-side…
Change List Length →
Change List Length Truncate, pad, or cycle any list to a target length. Free,…
Change List Separator →
Change List Separator and Convert list separators between newline, comma, tab, semicolon, pipe, and…
Chunk List Text →
Split any list into fixed-size chunks with line/numbered/labeled/custom-separator output. Live preview, keep-or-drop trailing chunk.…
Colorized List Item →
Colorized list item online. Turn any list text into a colour-coded HTML block with…
Convert List to Columns →
Arrange list items into 2-10 monospace-aligned columns with horizontal or vertical fill. Free, offline,…
Convert List to Image →
Turn a text list into a PNG or JPEG image with custom fonts, colors,…