To turn a CSV into a video, open a file with a time column (years, months, dates or quarters), choose the entity and value columns, pick an animation such as a bar chart race, and press Create video. The video is drawn and encoded in your browser: MP4 or WebM where this browser can encode them, otherwise an animated GIF, plus a PNG of any frame. Missing values stay gaps unless you choose otherwise, repeated rows must be combined by a rule you pick, and the CSV is not uploaded or changed.
How to make a video from a CSV file
- Open, drop or paste a CSV file, or keep the file you opened in another ViewCSV tool. The example is a synthetic quarterly revenue table.
- Under Data, choose the table layout. Long tables have a time, an entity and a value column; wide tables have one column per series.
- Under Story, choose the animation and the look, and add a headline, a source line, a unit and optionally a logo or background image.
- Under Video, choose the format (16:9, 1:1 or 9:16), resolution, length and frame rate, and the first and last period.
- Scrub the timeline or step period by period to check the frames, then choose a download format and press Create video.
The ten animations
| Bar chart race | Horizontal bars that grow and swap places as the ranking changes. Negative values extend left of zero. |
|---|---|
| Growing lines | One line per entity, drawn period by period on an axis that stays fixed, so earlier values never move. |
| Share donut | Each entity's share of the total of all entities in the period; entities beyond the shown number are grouped as Others. |
| KPI cards | Up to six cards with the current value and the percentage change from the previous period. |
| Progress to target | Actuals against one shared target or a target column, with the achievement percentage, including values above 100%. |
| Timeline heatmap | A grid of entities × periods that fills in up to the current period. Missing cells stay empty by default, or follow the missing-value rule you choose (repeat the last value or zero). |
| Bubble chart | The value column on the vertical axis, a second column on the horizontal axis and a third as the circle area. |
| Waterfall | Signed contributions in file order, building up to the net total, for example a profit bridge. |
| Share timeline | One 100% bar per period, so you can compare the mix across several periods at once. |
| 3D columns | Columns on a lit 3D stage with an optional slow camera orbit. It needs WebGL 2 graphics. |
Preparing the timeline: periods, duplicates and missing values
- Period order. Automatic order checks the whole time column once: if every period is a number, it sorts numerically; otherwise, if every period is a date such as
2024,2024-03,2024-03-31or2024-Q1, it sorts by date; otherwise it uses natural text order for all of them, soweek 10followsweek 9. A column that mixes numbers, dates and text is not sorted by type cell by cell. You can also keep the order of the file. Impossible dates such as2023-02-29are rejected under date order. - Repeated rows. If the same period and entity appear more than once, the video stops and says how many pairs repeat. Choose to add them up, average them, keep the smallest, the largest or the last row; nothing is combined silently.
- Missing values. By default a missing period stays a gap: the bar or line is absent for that period. You can repeat the last known value or show zero instead, and the video then says so in its status line. Values are never filled backward.
- Index and growth. Index divides by each entity's first non-zero value (= 100); a series that starts below zero has no meaningful index and is left empty. Growth compares each period with the period right before it; after an empty or zero period it is left empty.
Labels are used exactly as written: North and North are two entities. The CSV itself is never changed.
How numbers are read and shown
A value is used only when the whole cell is a plain number, such as 1200, -4.5 or 3e5, with the decimal mark you choose. Cells with units, currency signs or thousands separators (1,200) and numbers that a double can't hold faithfully are left out and counted in a warning, never drawn as zero.
Between two periods the motion is a straight-line blend of the two observed values, and the status line says which periods it moves between. In-between frames are not data. The values table lists exactly what the current frame shows; together with the status line it tells you whether that frame is an observed period, a blend between two periods, or includes values filled by the missing-value rule. Numbers in the video use your language's format with the decimal places you choose; shares and achievement are shown as percentages. If a calculation would produce numbers too large to draw reliably, the tool says so instead of drawing a broken chart.
Video, GIF and PNG downloads
| MP4 and WebM | Offered only when this browser can create them. Where WebCodecs is available, frames are encoded one by one at exact times, so the video is smooth on any device. Otherwise the browser records the animation in real time, and the tab must stay in front. |
|---|---|
| Animated GIF | 10 frames per second, 640 pixels on the long side, up to 30 seconds. |
| PNG | The frame at the current timeline position, at the full video size. |
| Sizes | 16:9, 1:1 or 9:16 at 720p or 1080p, 2 to 60 seconds, 24, 30 or 60 frames per second. A download can be up to 64 MB. |
Videos have no sound. The first and last moments hold the first and last period so viewers can read them. Changing the data or settings, or leaving the page, stops a running export so an outdated file is never saved.
Limits and privacy
A video can show up to 500 periods, 200 entities and 100,000 period × entity cells, from files up to 25 MB, 100,000 rows or 2 million cells. For a larger file, filter the rows or summarize them with a pivot table first. For a still chart, use the CSV chart maker.
Everything, including the logo and background images, stays in your browser tab. The file and the video are not uploaded.
Example: revenue by region as a bar chart race
A long table with one row per quarter and region. With time quarter, entity region and value revenue, the race shows three bars per frame. The missing West value for 2024-Q2 stays a gap: West has no bar in that period.
quarter,region,revenue 2024-Q1,North,52 2024-Q1,South,33 2024-Q1,West,69 2024-Q2,North,64 2024-Q2,South,54 2024-Q3,North,76 2024-Q3,South,75 2024-Q3,West,77
{
"periods": ["2024-Q1", "2024-Q2", "2024-Q3"],
"series": {
"North": [52, 64, 76],
"South": [33, 54, 75],
"West": [69, null, 77]
},
"missing": 1
}Questions and answers
Why can't I choose MP4?
Not every browser can create MP4 files. The format list shows only what this browser can actually encode; GIF and PNG always work. Try a current Chrome, Edge or Safari for MP4.
My data has one column per country. Does that work?
Yes. Choose the wide layout and check the columns to animate; each column becomes one series, named after its header.
Why is a bar missing in some periods?
That entity has no plain number for the period, so it is left as a gap. Choose Repeat the last known value or Show as zero under Missing values if that fits your data, or fix the cells in the CSV editor.