A content calendar template is a spreadsheet where one row equals one post: the date, the network, the format, the idea, the caption, the asset and its status. You can build a free one in Google Sheets or Excel with three built-in features: dropdowns for status and network, color rules that show progress at a glance, and a duplicate check for topics. Below is the exact column layout, the steps in both tools, a filled-in example, and the point where a spreadsheet stops being enough.

The Toolkit take
1 row = 1 post
The rule that makes a spreadsheet calendar sortable, filterable and countable
12
columns in the layout
5
status steps, Idea to Posted
3
built-in features: dropdowns, color rules, duplicate check

The content calendar template: 12 columns that do the work

Most free templates fail for one reason. They are built as a pretty month grid, with a box per day and text squeezed inside. That looks like a calendar, but you can't sort it, filter it or count it. A working plan is a flat list, one post per row, so you can filter by network, sort by date and see in seconds what is still a draft. If you want a grid later, you can always view the same rows by date.

Here is the layout. Put it on row 1 of a new sheet and keep the column order, because the steps below refer to these letters.

Col Header What goes in it Input type
A Date Publish date Date
B Time Planned time, your time zone Text
C Network Instagram, Facebook, LinkedIn, TikTok Dropdown
D Format Reel, carousel, single image, text, Story Dropdown
E Pillar Your 3-5 recurring themes Dropdown
F Topic / hook The idea in one line Text
G Caption Final copy, ready to paste Text
H Asset link Link to the image or video file Link
I CTA / link Where the post sends people Text
J Status Idea, Drafted, Ready, Scheduled, Posted Dropdown
K Owner Who writes or approves it Dropdown
L Result notes Reach or comments after a week Text

Two columns earn their place more than the rest. Pillar stops the plan drifting into ten promos in a row, because you can count posts per theme. Status turns the sheet into a pipeline: anything not marked Ready by Thursday is next week's problem, and you see it before it becomes one.

Build a Google Sheets content calendar, step by step

Google Sheets is the natural home for a free content calendar if more than one person touches it, since everyone edits the same file. Type the twelve headers on row 1, then add the dropdowns. Google's own steps are short.

  1. Select the cells in column J (Status), from row 2 down.
  2. Click Insert, then Dropdown. You can also right-click and pick Dropdown, or type @ and choose Dropdowns.
  3. In the Data validation rules panel, under Criteria, choose Dropdown and type each value: Idea, Drafted, Ready, Scheduled, Posted. Click Add another item for each one.
  4. Optionally give each value a color in the same panel, then click Done.
  5. Repeat for Network (C), Format (D), Pillar (E) and Owner (K).

By default, Sheets rejects any value that isn't on the list; under Advanced options you can switch that to a warning instead.[1] Keep the rejection on for Status. A typo like Schedueld silently breaks every filter you build later.

💡
Toolkit tip
Reject typos in Status

Keep the dropdown set to reject values that are not on the list. One misspelled status quietly drops a post out of every filter.

Color whole rows by status

A colored chip in one cell is good. A whole row going green when a post is live is better, because you can scan a month in one look. Select the range A2:L500 (start at row 2, below the headers), click Format, then Conditional formatting. Under Format cells if, choose Custom formula is and enter =$J2="Posted", pick a green fill, and click Done. Add a second rule with =$J2="Idea" in gray. The dollar sign locks the rule to column J while it runs down every row.[2]

Catch repeated topics

The same help page shows a formula for flagging duplicates. Select the range F2:F500 and add a custom formula rule like =COUNTIF($F$2:$F$500,F2)>1 with a red fill. Any topic you have already planned lights up the moment you type it again. That alone fixes the most common complaint about long-running calendars: we keep posting the same thing.

Optional: a timeline view

If your Google Workspace edition supports it, Insert, then Timeline turns the same rows into cards on a time axis. It needs at least one column in date format, and Google lists only certain Workspace editions as eligible, so check before you rely on it.[3] Group the cards by the Network column and you get a lane per channel.

The Excel content calendar template version

Excel works just as well for one person or a team that already lives in Microsoft 365. Microsoft recommends keeping dropdown values in an Excel table, so the lists update when you add an item.

  1. On a second sheet named Lists, type each set of values in its own column: statuses, networks, formats, pillars, owners.
  2. Click any cell in a list and press Ctrl+T to turn it into a table.
  3. Back on the calendar sheet, select the Status cells in column J.
  4. Go to the Data tab, then Data Validation.
  5. On the Settings tab, in the Allow box, select List. In the Source box, select the status range on the Lists sheet, leaving out the header.
  6. Check In-cell dropdown. On the Error Alert tab, choose the Stop style so nobody can type a value outside the list.[4]

Repeat for the other dropdown columns. If Data Validation is grayed out, Microsoft notes the sheet may be protected or shared. Excel's conditional formatting does the same row-coloring job as in Sheets.

⚠️
Watch out
Dates must be real dates

If the Date column holds text instead of date values, sorting goes wrong and the Google Sheets timeline view will not build. Format column A as a date before you fill it.

A month filled in: what good rows look like

Picture a neighborhood bakery posting three times a week on Instagram and once a week on Facebook. Four pillars: behind the counter, new bakes, customers, local events. Here is how a single week reads in the sheet:

Filter Status to Idea and Drafted on Wednesday and you have the to-do list for the rest of the week. Filter Pillar to new bakes at month's end and you see whether promos crowded out everything else. The Result notes column, filled a week after each post, tells you which pillar to give more slots next month.

Running it every week without it going stale

A template is only as useful as the habit around it. Three routines keep it alive.

Plan in batches. Fill the next two to four weeks of rows in one sitting, topics and pillars first. Captions can come later. Batching is what makes a calendar save time, because you decide once instead of every morning.

Move status forward, never sideways. Every row walks Idea to Drafted to Ready to Scheduled to Posted. If a post stalls, change its date rather than leaving a stale row behind. A calendar full of old Drafted rows stops being trusted, and then nobody opens it.

Close the loop. Once a week, type one line in Result notes for each post that went out. You don't need a full report. Short notes like saves high or no comments are enough to steer next month's pillars. Our guide to the social media content calendar covers how to pick pillars and cadence in the first place.

💡
Toolkit tip
Write results in one line

A week after a post goes out, add a short note on how it did. A month of those notes tells you which pillar deserves more slots.

Where the free content calendar stops working

The spreadsheet plans. It does not publish. Every Ready row still has to be copied, caption and file, into each network's own scheduler or app. At four posts a week on two networks, that copying takes minutes. It becomes the job itself once you run three or more networks, several posts a day, or someone else's accounts.

Four things break, in roughly this order:

  1. Copy-paste errors. A caption lands on the wrong network, a link is missing, a post goes out twice.
  2. No preview. A row can't show you how the Instagram grid will look once nine posts sit next to each other.
  3. Approvals by comment thread. When a client or manager has to sign off, comments in cells get lost and nothing stops an unapproved post going live.
  4. Two sources of truth. The sheet says Scheduled, the scheduler says something else, and nobody knows which one is right.

When two of these hit you in the same week, a planning tool pays back the switch. The ones in our catalog keep the calendar and the publishing in one place. Later shows a drag-and-drop calendar next to an Instagram grid preview; see how Later plans and previews an Instagram feed. Metricool's Planner can import and export the calendar as CSV, so your spreadsheet rows can move in, as covered in our Metricool Planner walkthrough. SocialBee turns your pillars into a weekly schedule by category, which is the same logic as the Pillar column, done for you. Our SocialBee review explains how the categories work.

Later Solves this

Drag posts onto a visual calendar and check them against an Instagram grid preview before they go live, with a shared media library for the files your Asset link column used to point to.

Where it stops: Drafts count toward the monthly post cap, and an approval does not block a scheduled post. Plan: Approvals and Share Calendar: Growth
Metricool Solves this

The Planner is a drag-and-drop calendar with notes and post previews; Import CSV brings your spreadsheet rows in, and Export CSV keeps a backup.

Where it stops: Free covers 1 brand and 20 posts a month, with no LinkedIn or X. Plan: Approval workflow: Advanced; read-only shared calendar through Studio: Starter
SocialBee Solves this

Your content pillars become categories mapped to a weekly posting schedule, so each slot pulls the next post from the right theme; Copilot can draft categories and the schedule from your website.

Where it stops: No free plan, only a 14-day trial; exporting your content needs a request to support. Plan: Approvals: Accelerate; internal notes: Pro

For the full comparison, with approvals and team features side by side, see our roundup of content calendar tools.

Frequently asked questions

Is there a free content calendar template I can download?+

You don't need one. Type the 12 headers from the table above on row 1 of a blank Google Sheets or Excel file, add the dropdowns, and you have the same thing a download would give you, built around your own networks and pillars.

Should a social media content calendar be weekly or monthly?+

Plan monthly, work weekly. Fill topics and pillars for the next two to four weeks in one sitting, then use a short weekly check to move each row's status forward.

Can I import a spreadsheet content calendar into a scheduling tool?+

Some tools accept a CSV file. Metricool's Planner has Import CSV and Export CSV, and SocialBee imports up to 300 items by CSV from its Accelerate plan. Match your columns to the tool's import format first.

Which is better for a content calendar, Google Sheets or Excel?+

Google Sheets suits teams that edit one shared file in the browser. Excel suits people already working in Microsoft 365. The column layout and the dropdown logic are the same in both.

The bottom line

A free content calendar template is a flat list, not a grid: one row per post, twelve columns, dropdowns for status, network, format and pillar, and color rules that show what is live. Build it in Google Sheets if several people edit it, or in Excel if you already work there. It carries a small business a long way. The moment copy-pasting into each network, client approvals or feed previews eat your week, move the same columns into a tool that plans and publishes from one calendar.

Sources
  1. [1] Google Docs Editors Help (Nov 2026) https://support.google.com/docs/answer/186103?hl=en&co=GENIE.Platform%3DDesktop
  2. [2] Google Docs Editors Help (Nov 2026) https://support.google.com/docs/answer/78413?hl=en&co=GENIE.Platform%3DDesktop
  3. [3] Google Docs Editors Help (Nov 2026) https://support.google.com/docs/answer/12935277?hl=en
  4. [4] Microsoft Support (Nov 2026) https://support.microsoft.com/en-us/excel/get-started/create-a-drop-down-list