---
title: "What You Can Add to a Lesson"
description: "Every file, link and assessment you can add to a Frappe Learning lesson, and how each one shows."
space: "Learning"
url: "https://docs.frappe.io/learning/course-creation/adding-a-lesson/what-you-can-add"
updated: "2026-11-06"
---

A lesson can hold text, media, embeds and assessments. Add any of them with the **+** button in the lesson editor, or paste a link on an empty line: Learning recognises the links below and turns them into the right block.

## Upload a file

Use the **Upload** block to add a file from your computer. It stays private to the people who can open the lesson.

| File | Formats | Shows as |
|---|---|---|
| Image | .jpg, .jpeg, .png | The image, full width |
| Video | .mp4, .mov | A video player, with in-video quizzes if you add them |
| Audio | .mp3, .wav, .ogg, .m4a, .aac | An audio player with speed control |
| Document | .pdf | The PDF, readable in the lesson |

## Paste a link

Paste the link on its own, not embed code. The file or page must be shared so that your learners can open it.

| Source | Paste a link like | Notes |
|---|---|---|
| YouTube | `https://www.youtube.com/watch?v=<video-id>` or `https://youtu.be/<video-id>` | Counts towards video completion |
| Vimeo | `https://vimeo.com/<video-id>` | Counts towards video completion |
| Bunny Stream | `https://iframe.mediadelivery.net/play/<library-id>/<video-id>` | Counts towards video completion |
| Cloudflare Stream | `https://customer-<account-id>.cloudflarestream.com/<video-id>/watch` | The lesson completes on time spent, since its progress can't be tracked |
| Google Drive | `https://drive.google.com/file/d/<file-id>/view` | Share the file with anyone who has the link |
| Google Docs | `https://docs.google.com/document/d/<file-id>/edit` | Share the file with anyone who has the link |
| Google Sheets | `https://docs.google.com/spreadsheets/d/<file-id>/edit` | Share the file with anyone who has the link |
| Google Slides | `https://docs.google.com/presentation/d/<file-id>/edit`, or a published `/pub` link | Learners get the slide controls |
| CodeSandbox | `https://codesandbox.io/s/<sandbox-id>` | Runs in the lesson |
| CodePen | `https://codepen.io/<user>/pen/<pen-id>` | Runs in the lesson |
| GitHub Gist | `https://gist.github.com/<user>/<gist-id>` | Shows the code |
| Aparat | `https://www.aparat.com/v/<video-id>` | |
| An image on any site | A direct link ending in .jpg, .jpeg, .png, .gif, .webp or .tiff | For example a file on Bunny or another CDN. A link with `?width=` and the like works too |
| Cloudflare Images | `https://imagedelivery.net/<account-hash>/<image-id>/<variant>`, or your site's own `/cdn-cgi/imagedelivery/...` link | Shows as an image |
| An audio file on any site | An https link ending in .mp3, .m4a, .wav, .ogg or .aac | Plays in the audio player. Signed links with a query string work too, for example from Bunny or Cloudflare R2 |

## Add an assessment

| Block | What it does |
|---|---|
| Quiz | Questions that check understanding, and can hold learners back until they pass |
| Assignment | Work learners submit as a file, an audio recording, a link or text, for an instructor to grade |
| Programming exercise | Code learners write and test in the browser, graded automatically |

To learn more, see [Add video content](/learning/course-creation/adding-a-lesson/add-video-content), [Adding Google content](/learning/course-creation/adding-a-lesson/adding-google-content), [Interactive Content](/learning/course-creation/adding-a-lesson/add-interactive-content), [Quizzes](/learning/quizzes) and [Assignments](/learning/assignments).
