CSV to BBCode Converter
A CSV to BBCode converter turns a spreadsheet into forum markup for phpBB, XenForo, vBulletin and the long tail of boards still running. BBCode is not a standard and not every board has a table tag, so this offers three dialects: table tags, an aligned code block that renders anywhere, and a labelled list that survives a phone screen. Nothing is uploaded.
Need to trim it to the interesting rows first? Open the app
BBCode is not one thing
There is no BBCode specification. There is a rough consensus about [b], [i], [url] and [quote], and after that every forum software made its own decisions.
Tables are the clearest example. [table] is an extension, not a core tag. XenForo has one. Most current phpBB installs have one, sometimes only if an extension is enabled. Plenty of older boards, and some deliberately minimal ones, have none at all, and on those your carefully generated table posts as visible [table][tr][td] text.
That is why picking a dialect is the first thing on this page rather than something decided for you. If you know your board renders tables, the table dialect looks native and reflows properly. If you do not know, the code dialect is the safe answer: aligned monospace text inside a [code] block, which every board that has ever existed renders correctly, because [code] is one of the tags everybody implemented.
The same rows in three shapes
Starting from:
part,supplier,price
00412,Nordwerk,4.25
04510,Fenwick,31.50
Table dialect is compact and depends on the board:
[table]
[tr][td][b]part[/b][/td][td][b]supplier[/b][/td][td][b]price[/b][/td][/tr]
[tr][td]00412[/td][td]Nordwerk[/td][td]4.25[/td][/tr]
[tr][td]04510[/td][td]Fenwick[/td][td]31.50[/td][/tr]
[/table]
Code dialect works everywhere:
[code]
part supplier price
----- -------- -----
00412 Nordwerk 4.25
04510 Fenwick 31.50
[/code]
List dialect reads on a phone:
[list]
[*][b]part[/b]: 00412 | [b]supplier[/b]: Nordwerk | [b]price[/b]: 4.25
[*][b]part[/b]: 04510 | [b]supplier[/b]: Fenwick | [b]price[/b]: 31.50
[/list]
In the code dialect the price column is right aligned because it typed as numeric, and the widths are measured in display columns, so a supplier name in Japanese would still leave a straight edge. In the list dialect every column name is repeated on every row, which is a lot more text and the only shape that wraps cleanly on a narrow screen.
There is no escape character
This is the part worth knowing before you post. BBCode has no backslash escape and no entity mechanism. A cell containing [b], [url=...] or anything else that looks like a tag will be interpreted by the board, and there is no character sequence that reliably prevents it.
The nearest thing to a defence is [noparse], which tells the board to render its contents literally. It is offered here as an option, and it is honest about its limits: not every board implements it either, and on one that does not you have swapped one visible tag for another.
So what happens by default is that cells containing bracket markup are counted and reported, and left as they are. Knowing that four of your cells will be interpreted is enough to decide whether to turn on noparse, edit those cells, or use the code dialect, which is immune because everything inside a code block is literal by definition.
A line break inside a cell becomes a space in every dialect, with a count. All three are line-oriented and a raw newline would split a row.
Questions
Why are there three dialects rather than one?
Because BBCode is not a standard. The table tag is an extension: XenForo has one, most current phpBB installs have one, and a long tail of older boards have none at all, where the tags show up as literal text. The code dialect sidesteps that entirely by using aligned monospace text inside a code block, which every board that has ever existed renders correctly. The list dialect exists for phones, where a wide table is unusable.
How do I escape BBCode markup in my data?
There is no escape character. BBCode has no backslash and no entity mechanism, so a cell containing square-bracket markup will be interpreted by the board. The only defence is the noparse tag, which is offered as an option, and even that is not supported on every board. Cells that look like markup are counted and reported so you can decide before posting.
Which dialect should I pick?
If you know the board renders tables, use the table dialect: it reflows and looks native. If you are not sure, or the board is old, use the code dialect. It is aligned monospace inside a code block, so the columns line up everywhere, at the cost of scrolling sideways rather than wrapping on a narrow screen. If most of your readers are on phones, use the list dialect.
What does the uppercase option do?
It writes the tags as [TABLE] and [TR] rather than lowercase, which is the XenForo house style and what its own editor produces. Boards are case-insensitive about tags, so it makes no functional difference; it matters only if you want the source to match what other posts on that board look like.
Are numbers aligned in the code dialect?
Yes. Columns typed as numeric are right aligned so the digits line up and a column can be read down, and everything else is left aligned. Widths are measured in display columns rather than string length, so a table containing CJK text or emoji still has a straight edge. The header row is left aligned even over a numeric column, since a heading is a label rather than a value.
Why does the list dialect repeat every column name?
Because that is what makes it readable on a narrow screen. A table needs a header row at the top and horizontal space to relate a cell back to it; a labelled list carries its own labels on every row, so it wraps cleanly at any width. It costs a lot more text, which is the trade you are making when you pick it.
Is anything uploaded?
No. Everything runs in your browser tab with nothing sent to a server, nothing kept between visits and no row cap. Copy the result and paste it into the forum's post editor.
Related
Convert your CSV to BBCode
No sign-up, no upload, no row cap. Three dialects, so it works on the board you actually post to.
Back to the converter