How to build university lecture slides from markdown
- Step 1Write the lecture in Markdown — Put each concept under a
##heading with bullets, numbered steps, or a table beneath it. - Step 2Separate slides with `---` — Add a line of only
---between concepts. Headings alone do not split the deck. - Step 3Reveal steps with `----` — For a worked example, separate each step with
----so it becomes a vertical stack students step through. - Step 4Upload one notes file — Paste the Markdown or drop a single
.mdfile. One file is processed per run. - Step 5Preview before class — Use the live iframe preview to check that long examples fit and tables are readable from the back row.
- Step 6Download and present — Save the
-slides.html, open it on the lecture-hall machine, and navigate with arrow keys; Esc shows the slide grid for jumping to a topic.
Classroom feature support
What the deck renders for teaching, and what it does not.
| Need | Supported? | Notes |
|---|---|---|
| Bullet & numbered lists | Yes | Standard Markdown lists render on slides |
| Comparison / truth tables | Yes | GFM pipe tables supported |
| LaTeX math | No | No KaTeX/MathJax — math shows as raw text |
| Images / diagrams | Linked only | Use Markdown image links; no diagram renderer |
| Speaker notes | No | No Note: transform — text stays on the slide |
| Offline presenting | No | Reveal.js loads from CDN; needs network |
Slide markers
The two structural controls available.
| Marker | Creates | Teaching use |
|---|---|---|
--- | Horizontal slide | Next concept or section |
---- | Vertical sub-slide | Step-by-step worked example or proof |
## Heading | Title on current slide | Concept name — does not split |
Tier limits (markdown family)
Character limit is separate from file size.
| Tier | Max file size | Max characters | Files per run |
|---|---|---|---|
| Free | 1 MB | 500,000 | 1 |
| Pro | 10 MB | 5,000,000 | 10* |
| Pro + Media | 50 MB | 20,000,000 | 50* |
| Developer | 500 MB | Unlimited | Unlimited* |
Cookbook
Five teaching-oriented patterns. Each shows lecture Markdown and what the deck does. Note the math caveat — write equations as images if you need them rendered.
A concept slide then an example slide
Two horizontal slides via ---.
## Big-O notation - Describes growth as n grows - Ignores constants --- ## Example Linear search is O(n).
A worked example revealed step by step
---- builds the solution one slide at a time.
## Solve 2x + 3 = 11 ---- Subtract 3: 2x = 8 ---- Divide by 2: x = 4
A comparison table slide
GFM table renders directly for a side-by-side comparison.
## Sorting algorithms | Algorithm | Best | Worst | |-----------|------|-------| | Bubble | n | n^2 | | Merge | n lg n | n lg n |
Math as an image (because LaTeX is not rendered)
Since the deck does not render LaTeX, link a rendered image of the equation.
## The integral  Area under the curve from a to b.
Section divider slide
A heading-only slide between major topics, separated by ---.
## Part II: Recursion --- ## Base cases Every recursion needs one.
Edge cases and what actually happens
LaTeX math shows as raw text
Not supportedNo KaTeX or MathJax is loaded, so $\frac{a}{b}$ appears literally on the slide. Use a pre-rendered image of the equation, or normalize delimiters with md-math-normalizer if you add a math library to the HTML yourself.
Heading does not start a new slide
By designA ## is a title inside the current slide. Add a --- line to break. A wall-of-text slide means you forgot a separator.
Lecture machine offline
CautionReveal.js loads from cdnjs; with no network the deck renders unstyled. Confirm the hall PC has internet, or self-host the assets in the file.
Front matter creates blank slides
CautionA leading YAML ---/--- block is read as separators, producing stray slides. Remove it before converting.
No speaker notes
Not supportedThere is no notes feature. Anything you type appears on the projected slide. Add <aside class="notes"> by hand for presenter view if your machine supports it.
Long example overflows the slide
CautionReveal does not auto-shrink content. A long worked example may run off the slide. Split it across ---- sub-slides.
Course pack over the limit
413 rejectedA full term of notes can exceed 500,000 characters on Free even under 1 MB. The character cap is separate — upgrade or convert per lecture.
Multiple lecture files dropped
IgnoredOnly the first file is converted. Combine a multi-lecture deck with md-merger first.
Empty notes file
ExpectedEmpty input yields a valid blank deck with one empty section — not an error.
Frequently asked questions
How do I separate lecture slides?
A line of only --- makes a new slide; a line of only ---- makes a vertical sub-slide for step-by-step content. Headings do not split the deck.
Does it render LaTeX equations?
No. KaTeX and MathJax are not loaded, so math displays as literal text. Use a pre-rendered image of the equation for the slide.
Can I present from any classroom computer?
Yes, from any modern browser — but the machine needs internet because Reveal.js loads from a CDN. No PowerPoint or Keynote required.
Can students get the slides?
Yes. Share the downloaded -slides.html file or host it; students open the exact deck in their own browser.
Are tables supported for comparisons?
Yes. GitHub-Flavored Markdown pipe tables render on the slide — good for comparison and truth tables.
Can I reveal a proof one line at a time?
Yes. Separate each step with ---- to build a vertical stack students step through with the Down arrow.
Are speaker notes supported?
No. There is no Note: conversion; text stays on the slide. Add <aside class="notes"> to the HTML manually for presenter view.
What theme does it use?
The built-in Reveal.js black theme. There is no picker; edit the theme link in the HTML to change it.
How big can my notes file be?
Free: 1 MB and 500,000 characters. Pro: 10 MB / 5,000,000. Pro + Media: 50 MB / 20,000,000. Developer: 500 MB, no character cap.
Can I add diagrams?
Only as linked images. There is no Mermaid or diagram renderer in the deck — embed an image of the diagram instead.
Can I convert a whole term at once?
No. One file per run. Merge lectures with md-merger first, or convert each lecture separately.
What if I just want a PDF handout?
Use md-to-pdf-academic for a serif, paper-style PDF page or md-to-pdf-modern for a sans-serif one — both take the same Markdown.
Privacy first
All Markdown processing runs locally in your browser using JavaScript. No file is ever uploaded to JAD Apps servers — only metadata counters are saved for signed-in dashboard stats.