CourseTag Standard · v1.0

Write a course in a document.
Tag it once. Use it anywhere.

CourseTag is an open, vendor-neutral standard for authoring structured course content in everyday documents. Write your material in Word or Google Docs, mark it up with simple CourseTag syntax, and any compatible tool can turn it into an interactive course — SCORM, HTML, xAPI, or whatever comes next.

Free to implement · No permission required · No registration

1 · Abstract

A CourseTag document is an ordinary document — plain text with a handful of bracketed tags. The tags describe learning structure: modules, knowledge checks, flip cards, callouts, images, and more. Because the source is just a document, anyone can read it, edit it by hand, version it, and move it between tools. CourseTag separates what a course is from which software renders it.

2 · Motivation

Course content shouldn’t be trapped.

Almost every course begins life in a document. The writing, the structure, the examples — all of it exists, in Word or Docs, before any authoring tool is opened. Then that finished content gets rebuilt, by hand, inside proprietary software that owns the result. Move to another tool and you start over. The source was never portable, because there was never a shared way to express it.

CourseTag is that shared way. One documented syntax, free for anyone to read or implement, so the sourceof a course is portable even when the tools aren’t. Write it once; open it in anything that speaks CourseTag.

3 · At a glance

Tag on the left. Course on the right.

Every CourseTag block is plain text a person can type and a machine can parse. Here is the same idea in three forms — a knowledge check, a set of flip cards, and a callout.

[mcq]
Question: What does PPE stand for?
A: Personal Performance Equipment
*B: Personal Protective Equipment
C: Public Protective Equipment
Explanation: PPE protects workers from hazards.
[/mcq]
Knowledge check

What does PPE stand for?

  • Personal Performance Equipment
  • Personal Protective Equipment ✓
  • Public Protective Equipment
[flipcards]
Hazard :: Something that can cause harm
Risk :: Likelihood and impact of harm
[/flipcards]
Flip cards
Hazard
Something that can cause harm
[callout warning]
Always wear PPE on the job site.
[/callout]
Always wear PPE on the job site.

A leading asterisk marks the correct option. :: separates the two sides of a pair. That’s the whole learning curve.

4 · Who it’s for

Course creators

Write where you already write. Keep your source as a document you own and can hand-edit forever. Never rebuild a course to move tools — the tagged document goes with you.

Tool builders

Adopt a ready-made authoring syntax instead of inventing one. Parse CourseTag documents into your own tool and interoperate with every other implementation for free.

The industry

A shared source format means course content can move between authoring tools, LMSs, and formats — the way Markdown moves between editors. Content outlives the software that made it.

5 · The ecosystem

One standard, many implementations.

CourseTag is the specification, not a product. The words matter, so here is the hierarchy:

CourseTag Standard
The specification — the syntax this page documents.
CourseTag Document
Any document authored using the standard.
CourseTag Parser
Any code that reads a CourseTag document into blocks.
Implementation
A tool that supports the standard. CourseConverter is the reference implementation — the same syntax this page documents is what it imports today.

CourseConverter built CourseTag and maintains the reference implementation, but the standard belongs to everyone. Build a Moodle plugin, a PowerPoint exporter, an xAPI generator — nothing here requires CourseConverter.

6 · Specification · v1.0

The tags.

Every tag below is real syntax the reference implementation parses today. A block-level tag opens and closes ([tag][/tag]); a few are self-closing. Inside a pair block, :: separates the two sides. An empty tag creates a blank block of that type to fill in later.

Content & interactive

6.1[accordion]Expandable question / answer rows.
[accordion]
What is PPE? :: Personal Protective Equipment
Why important? :: Reduces injury risk
[/accordion]
6.2[tabs]Tabbed panels.
[tabs]
Beginner :: Start with fundamentals
Advanced :: Deep dive into concepts
[/tabs]
6.3[mcq]Multiple-choice knowledge check. A leading asterisk marks the correct option.
[mcq]
Question: What does PPE stand for?
A: Personal Performance Equipment
*B: Personal Protective Equipment
C: Public Protective Equipment
Explanation: PPE protects workers from hazards.
[/mcq]

Mark the correct answer with a leading asterisk (*B:). The Explanation line shows after the learner answers. Add a background image with [mcq bg=https://example.com/image.jpg].

6.4[flipcards]Two-sided cards. Front :: Back, with optional image URLs.
[flipcards]
Hazard :: Something that can cause harm
Risk :: Likelihood and impact of harm
[/flipcards]

[flipcards]
Front text :: Back text :: frontImageUrl :: backImageUrl
[/flipcards]

Image URLs are optional and come after the two text sides, in that order.

6.5[matching]Drag-to-match pairs. First line without :: is the instruction.
[matching]
Match each term to its definition
Term one :: Definition one
Term two :: Definition two
[/matching]

Two to eight pairs.

6.6[process]Sequential steps. One step per line: title :: description.
[process]
First step :: What happens first
Second step :: What happens next
[/process]
6.7[confirmation]An attestation checkbox. Add 'optional' to make it non-blocking.
[confirmation]
I confirm I have read and understood the policy above.
[/confirmation]

[confirmation optional]
I would like to receive a copy of this policy by email.
[/confirmation]
6.8[callout]A highlighted note. Variants: info, warning, success, tip.
[callout warning]
Always wear PPE on the job site.
[/callout]
6.9[quote]A pull quote.
[quote] It is not the strongest that survives. — Darwin [/quote]
6.10[video]An embedded video by URL.
[video] https://youtube.com/watch?v=xxx [/video]
6.11[hotspot]Clickable markers on an image. Coordinates are percentages.
[hotspot url=https://example.com/image.png alt=Description]
Region name :: 30 :: 25 :: Short tooltip :: Longer explanation
[/hotspot]

Each marker: label :: x :: y :: tooltip :: body. x and y are percentages from 0 to 100.

Media

6.12[image url=…]An image from a URL, with optional alt and caption.
[image url=https://example.com/photo.jpg alt=Description caption=Optional caption]
6.13[stock: keyword]A stock image matched to a keyword, fetched and hosted automatically.
[stock: warehouse safety]

Pulls a matching image from Pixabay by keyword. Use [image url=…] instead when you have a specific image. Embedded images placed directly in the document are imported automatically — no tag needed.

Layout

6.14[section_break]Starts a new module, with an optional number and label.
[section_break]
1 :: Part One: Introduction
[/section_break]
6.15[divider]A horizontal rule between blocks.
[divider]

Untagged headings and paragraphs are imported as-is: headings become module and lesson structure, text becomes lessons. You only reach for a tag when you want an interactive block.

7 · Authorship

AI can write it. You stay in control.

Because a CourseTag document is plain text, AI is very good at producing one — describe a course to an assistant and it can output valid CourseTag in seconds. But the output isn’t a black box you have to accept. It’s a document. You open it, read it, and change any word, any answer, any example by hand.

That’s the point people miss about AI-authored content: with a proprietary tool you get whatever the AI generated, and editing means fighting the software. With CourseTag the AI just gives you a first draft in a format you already know how to edit. Generate fast, then make it yours. Human judgement stays where it belongs — with the human.

8 · AI prompts

Generate a CourseTag document.

Paste one of these into ChatGPT, Claude, or any capable model. Edit the topic, run it, and drop the result into a document. Then hand-edit anything you like.

Draft a whole course
Write a short course on [YOUR TOPIC] using CourseTag syntax.

Use these tags exactly:
- Headings for modules and lessons (plain text, no tag)
- [mcq] ... [/mcq] for knowledge checks — mark the correct
  option with a leading asterisk, e.g. "*B:", and include an
  Explanation line
- [flipcards] ... [/flipcards] with "Front :: Back" per line
- [accordion] ... [/accordion] with "Question :: Answer" per line
- [callout warning] ... [/callout] for important notes
  (variants: info, warning, success, tip)
- [section_break] N :: Title [/section_break] to start a module

Cover 3–4 modules. End each module with one [mcq].
Output only the tagged text, ready to paste into a document.
Turn notes into a course
Here are my rough notes on [TOPIC]:

[PASTE YOUR NOTES]

Rewrite them as a CourseTag document. Keep my facts, improve
the structure. Use headings for modules, [mcq] knowledge checks
(leading asterisk marks the correct answer, add an Explanation line),
[flipcards] for key terms ("Term :: Definition"), and
[callout] for anything critical. Output only the tagged text.

The reference document below lists every tag with an example — keep it open while you edit, or paste its contents into your prompt so the model has the full syntax.

9 · Try it

See a CourseTag document become a course.

The fastest way to understand the standard is to run one through an implementation. Download the reference document, then import it into CourseConverter — the reference implementation — and watch every tag turn into a working, interactive block.

1
Download the reference document. Every tag, with a worked example, in a single .docx.
2
Edit it, or write your own. Change the content by hand, or generate a fresh document with a prompt above.
3
Import it into CourseConverter. Sign up free, import the document, and see the tags render as a real course you can preview and export to SCORM or HTML.
10 · For developers

Implement CourseTag in your tool.

CourseTag is free to implement, with no permission or registration. A conforming parser reads a document, recognises the bracketed tags, and produces the corresponding blocks; untagged headings and text map to structure and lessons. Unknown tags should be preserved as text, never dropped, so a document stays valid across implementations.

Minimum conformance

Parse the block tags in §6, honour :: field separators and the * correct-answer marker, and pass untagged content through unchanged.

Say so

A tool that reads these documents may state that it “supports the CourseTag standard” and link back here so authors know their documents will work.

A reference to cite: CourseTag Standard v1.0, coursetag.org.

11 · Questions

Is CourseTag free?

Yes. The standard is open and free to implement or author with. No licence fee, no registration, no permission required.

Do I need CourseConverter to use it?

No. CourseTag is a standard; CourseConverter is one implementation of it. You can author CourseTag documents with nothing but a word processor, and any tool that adopts the standard can read them.

Can I extend it with my own tags?

A conforming parser preserves unknown tags as text rather than dropping them, so you can experiment without breaking portability. Widely useful additions can be proposed for a future version of the standard.

Which document formats work?

CourseTag is plain text, so it works in any format that carries text — Word (.docx), Google Docs, Markdown, or a plain text file. The reference implementation imports .docx today.

How is it versioned?

This is v1.0. Future versions will add tags without breaking existing documents wherever possible; a document valid under v1.0 stays valid.