A browser extension with 3.5k+ users.
It transforms raw csv
data into a simple html
table, and shows it online in the same tab.
Available free for Chrome and Firefox.
When quickly looking through csv data files online, you either have to:
- Open them with Excel, Numbers, etc.
- Try to skim through the data in its raw state.
CSV Reader allows you to look at the data formatted as a table, so you can make decisions faster.
CSV Reader detects if the current tab is a .csv
page (correctly most of the time).
The user can select some settings in a popup to modify the output.
NEW: The extension now stores user settings per url for the next time you browse the same file.
NEW: The extension now stops csv
files from downloading (it modifies the response headers) so you can parse them in-browser. If you want to download the file just ctrl+s
(cmd+s
), even in the parsed csv
screen.
It offers different options (see images and examples below):
- Transform the raw
csv
data into a table, nicely formatted so it's easy to scan. - Keep the raw
csv
data but rainbow-color it to make it easier to read (inspired by the Rainbow CSV VS Code extension). - Download the data formatted as JSON (when there is a data header – title row).
It allows the user to input some settings:
Feature | Default | Type | Result |
---|---|---|---|
Separator | , |
String | New column when this value is found |
Title row | false |
Boolean | Use the first line as the table header |
Skip at the top | 0 |
Number | Number of text lines to leave untouched at the top |
Links in text | false |
Boolean | Look for links in data and make them clickable |
- Install the extension (in Chrome or Firefox).
- Head to any
.csv
data page. - Click on the extension icon, fill the form:
- Choose the separator.
- Check if there is a title row for the data. This will format a header row in the table.
- Input the number of lines to skip at the top. Some csv pages have a few lines with info, we don't want to format those.
- Check if there are links in the data. They will be formatted as clickable links.
- Click the appropriate button.
- Done, enjoy the result!
Visit a .csv
data file online. You can try this csv sample dataset.
Click on the CSV Reader extension icon.
In the popup, input the config options: separator, title row, etc. (In the example dataset, |
(pipe) as the separator, and check the title line option).
Click "Convert":
To go back to the raw data, click the "Reset" button on the extension popup:
If this extension was useful to you in any way, please consider leaving a ⭐ 5-star review.
It will take you less than a minute, and will greatly help reach new audiences.
Thank you very much!
Suggestions and PRs are welcome, of course. This is (roughly) the dev process:
extension/content_scripts/csv_reader.js
contains all the parse and output logic. The browser.tabs
queries use Promises, supported in Firefox but not in Chrome, so the extension loads a polyfill for this.
extension/popup/popup.js
manages the user input logic, messaging to the main content script, and custom CSS inserts.
To load the unpacked, test extension:
- In Chrome, load the whole unpacked
extension/
folder. Make sure the polyfill is inextension/polyfills/
. - In Firefox, I use Mozilla's web-ext tool.
To build and pack the extension, I use web-ext
too. It builds the extension
folder and creates a .zip
file inside extension/web-ext-artifacts
.
That's it, there is no further compiling or building process, for now at least.
Some features I'd like to work on (help appreciated):
- Show progress: while the content is being processed, hide the raw csv and show a loading component.
- Add a reset button directly in the page header.
- Stop
.csv
files from downloading, and instead open them in browser so thay can be converted. - Store user config (per url) so they don't have to input the same fields every time.
- Add a link to download .csv file in the page header.
- Try to auto-detect separator.
- Make columns hideable.
- Make table sortable by column.
- Detect if text looks like a link instead of having a popup checkbox.
CSV Reader uses svg
icons from Tabler Icons, thanks!