Free tool
Free content calendar template for Excel, Google Sheets and Numbers.
2 KB CSV. Opens in Excel, Google Sheets, Numbers and LibreOffice. Free to use and change however you like.
- Ideas
- Scripting
- Filming
- Editing
- Review
- Approved
- Scheduled
- Published
- Archive
Every column, and what to put in it
Seventeen columns, grouped into four jobs: what the video is, what it says, when it goes out, and how it did. Delete any group you do not need — nothing here depends on anything else.
What the video is
The five columns you sort and filter on. Everything else hangs off these.
- Title
- The working name. Not the caption and not the YouTube title — just enough to recognise the video in a list of forty.
- Client
- Who it belongs to. Leave it as your own name if you post for yourself; it becomes the first thing you filter on the moment there are two.
- Type
- Shortform, Long-form, Carousel or Image post. Type decides how long the row sits in Editing, so it is worth setting before you plan the week.
- Status
- Where the video is right now: Ideas, Scripting, Filming, Editing, Review, Approved, Scheduled, Published, Archive. One value, no half-states.
- Owner
- Whoever the row is waiting on. A blank Owner on a row that is stuck is usually the reason it is stuck.
What it says
Written once, in the same row as the video, so the copy and the cut never drift apart.
- Hook
- The opening line or the first frame. Kept as its own column deliberately — it is the part worth comparing across videos when you look back at what worked.
- Caption
- The post copy. Write the version for your main platform here and adapt it per platform at posting time.
- Hashtags
- Space-separated, in one cell. Keeping them out of the caption means you can reuse a tag set without re-reading the whole caption.
When it goes out
The scheduling half — the columns that turn a list into a calendar.
- Platforms
- Where this video is going: TikTok, Instagram Reels, Instagram Post, YouTube Shorts, YouTube. Comma-separated in one cell, already quoted correctly in the file.
- Publish Date
- The date it should go live, as YYYY-MM-DD so it sorts properly in every spreadsheet app and never gets read as an American date in one and a European one in another.
- Deadline
- The date the cut has to be finished — normally a few days before Publish Date. This is the column that tells you the week is overbooked, not Publish Date.
- Notes
- Everything that does not have a column: missing b-roll, the client's preference, the reason this one slipped.
How it did
Five result columns, left empty on purpose. Fill them in a week after publishing, from each platform's own analytics.
- Views
- The headline number, and the least useful one on its own — it mostly tells you whether the hook worked.
- Likes
- Cheap signal, easy to read. Worth logging because it is the one number every platform shows the same way.
- Comments
- The number worth reading rather than counting — the comments themselves are next week's content ideas.
- Shares
- The strongest distribution signal on short-form. High shares against low views usually means the video was good and the hook was not.
- Saves
- What people intend to come back to. Educational and list-style videos live or die here.
Dates are written as YYYY-MM-DD and any field containing a comma is quoted, so the file imports cleanly whichever spreadsheet app and locale you open it in.
How to actually use it
Six steps. The whole thing takes about twenty minutes to set up for a month of content, and roughly five minutes a day after that.
- 1
Open it and delete the example rows
Five rows are filled in so the file is not an empty grid — every one of them says EXAMPLE in the Title and “delete this row” in the Notes. Clear them and the header is your calendar.
- 2
Dump every idea in as a row
Title and Client only, Status set to Ideas. Do not write captions yet. A backlog you can see beats a backlog you can remember, and this is the step that makes the rest of the week decidable.
- 3
Set Deadline before Publish Date
Work backwards: pick when it should go live, then put the edit deadline two or three days earlier. If two rows share a deadline and you can only cut one a day, you have found the problem before the client does.
- 4
Move Status left to right, one value at a time
Ideas to Scripting to Filming to Editing to Review to Approved to Scheduled to Published. Sort by Status on a Monday and the sheet tells you what to work on without you deciding anything.
- 5
Fill the result columns a week after publishing
Views, Likes, Comments, Shares, Saves, copied from each platform. Then sort by Shares and read the Hook column of the top ten. That comparison is the entire point of keeping the hook in its own column.
- 6
Archive instead of deleting
Set Status to Archive when a video is done. A year of archived rows with hooks and results attached is the most useful thing in the file.
If the production side is what keeps slipping — versions, review rounds, who approved what — the video production tracker is the same idea aimed at the edit rather than the calendar. The two files are designed to sit side by side.
Where a spreadsheet stops working
Not a criticism of spreadsheets — we just gave you one, and for a lot of people it is the right tool for years. These are the specific things a grid of cells cannot do, so you can recognise them when you hit them.
The video is not in the row
A spreadsheet cell holds a link to a file at best. The actual cut lives in Drive, Frame.io or a hard drive, and which link is the current version is something you have to remember rather than something the sheet knows.
Feedback happens somewhere else
Client notes arrive on WhatsApp, in email, or as a voice note. Pasting “change the end card” into a Notes cell loses the timestamp it referred to, and the next version starts from a summary rather than the actual comments.
Nothing in a Publish Date column posts
The date is a reminder for you. Somebody still has to open TikTok, Instagram and YouTube at the right time and upload the file with the right caption — the sheet is a plan for that work, not a substitute for it.
Results have to be typed in by hand
Five numbers, per video, per platform, from three different analytics screens. It works for ten videos a month. At forty, the results columns quietly stop being filled in, and then the sheet only records what you planned rather than what happened.
One sheet, several clients
Filtering by Client holds up for a while. Then one client wants their own deadlines, another wants a report, and you are either duplicating the file per client or maintaining a wall of filters that only you understand.
ContentWorkflow is what this template turns into when those five things start costing real time: the same pipeline, but the video file is attached to the row, review comments land on the timestamp, the schedule actually publishes to TikTok, Instagram and YouTube, and the view and engagement numbers sync back on their own. See what it does or check the pricing. The template stays free either way.
Keep the template. Upgrade the parts it cannot do.
$29/month or $290/year, USD. One plan, no free tier and no trial — cancel any time.