Convert BibTeX to CSV

Paste the contents of a .bib file and get a clean CSV table, one row per entry. Pick the standard bibliographic columns, every field in the file, or your own ordered list; LaTeX accents and protective braces are decoded to real UTF-8 text, @string macros are resolved, and author names can be normalised for a spreadsheet or a citation manager.

Try:
CSV

About this tool

bibtex-to-csv turns a BibTeX bibliography into a CSV table: one row per @type{key, ...} entry, one column per field. It is for the moments when a .bib file has to leave LaTeX — auditing a reference list in a spreadsheet, importing into a reference manager or a database, checking for duplicate DOIs, or handing a publication list to someone who does not use LaTeX.

The parser is a real BibTeX parser, not a regex sweep. It reads {braced}, "quoted" and bare-number values, brace-balanced nesting, @string macros with # concatenation, @comment / @preamble blocks, parenthesised entries (@article(key, ...)), values that wrap across lines, and free text between entries. LaTeX accent macros are decoded to real UTF-8 by default, so \'{e} becomes é, {\H o} becomes ő, \ss becomes ß, --- becomes an em dash, and protective braces disappear so {DNA} stays DNA. Output is quoted per RFC 4180: a cell is wrapped in quotes only when it contains the delimiter, a double quote, or a line break, and internal quotes are doubled.

Worked example

This BibTeX:

@article{curie1898,
  title   = {Sur une substance nouvelle radio-active},
  author  = {Curie, Marie and Curie, Pierre},
  journal = {Comptes Rendus},
  year    = {1898},
  volume  = {127},
  pages   = {175--178}
}

with the default settings gives:

type,key,title,author,year,journal,booktitle,volume,number,pages,publisher,doi,isbn,issn,url
article,curie1898,Sur une substance nouvelle radio-active,"Curie, Marie and Curie, Pierre",1898,Comptes Rendus,,127,,175–178,,,,,

Every standard column is present even when the entry has no such field, so rows from different entry types stay aligned. The author cell is quoted because it contains a comma; 175--178 was decoded to an en dash.

Switch Columns to Custom, list key,author,year, set Author name format to Last, First and Author separator to Semicolon, and the same input gives:

key,author,year
curie1898,"Curie, Marie; Curie, Pierre",1898

Options and limits

FAQ

Why is my author column one cell instead of several?

BibTeX stores all authors in one field, so this tool keeps one author cell per entry — splitting into author_1, author_2, … would give every row a different width. Choose an Author separator of Semicolon or Pipe if you want to split the cell later in a spreadsheet, because those survive a comma-delimited CSV without ambiguity. Pair it with the Last, First format when you need a consistent spelling.

My accented characters look wrong in Excel — what do I change?

Two separate settings. Turn on Add UTF-8 BOM for Excel so Excel recognises the file as UTF-8 rather than guessing a legacy code page. If the whole row also lands in one column, switch the Delimiter to Semicolon, which is what Excel expects in locales that use a comma as the decimal mark. Leave the BOM off for pandas, R, or anything that reads UTF-8 directly.

What happens to entries that are missing a field?

The cell is empty; the row is never shortened and the entry is never dropped. That is why Standard mode always emits the same 15 columns. If you want to see only the fields that actually exist in your file, switch Columns to All fields found in the file — it takes the union of every field name across all entries.

Can it handle @string macros, `#` concatenation and `@comment` blocks?

Yes. @string{jcp = "J. Chem. Phys."} followed by journal = jcp # { (Letters)} produces J. Chem. Phys. (Letters) with Expand @string macros on, and the raw jcp (Letters) with it off. @comment and @preamble blocks, and any prose between entries, are parsed and skipped rather than turned into rows. A genuinely broken entry is a hard error naming the entry and the character position, so nothing is silently half-converted.

Is my bibliography uploaded anywhere?

No. The same Rust core is compiled to WebAssembly for this page and runs in your browser, and the identical code runs locally in the CLI. Nothing is sent to a server, and no external database is consulted.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool bibtex-to-csv "@article{curie1898,
  title   = {Sur une substance nouvelle radio-active},
  author  = {Curie, Marie and Curie, Pierre},
  journal = {Comptes Rendus},
  year    = {1898}
}"

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/bibtex-to-csv/?bibtex=%40article%7Bcurie1898%2C%0A%20%20title%20%20%20%3D%20%7BSur%20une%20substance%20nouvelle%20radio-active%7D%2C%0A%20%20author%20%20%3D%20%7BCurie%2C%20Marie%20and%20Curie%2C%20Pierre%7D%2C%0A%20%20journal%20%3D%20%7BComptes%20Rendus%7D%2C%0A%20%20year%20%20%20%20%3D%20%7B1898%7D%0A%7D&columns=standard&custom_columns=key%2Ctitle%2Cauthor%2Cyear%2Cdoi&delimiter=comma&header=true&decode_latex=true&author_format=bibtex&author_separator=and&expand_strings=true&sort=source&bom=true

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.