---
title: Reading a file
slug: reading
summary: How Skimmark shows a Markdown file, its images and links, and what it does not do yet.
---

# Reading a file

Skimmark shows each Markdown file as one clean, formatted page without the raw Markdown symbols. Skimmark is a reader for now. It never changes your files.

## What renders

- Headings, paragraphs, lists, quotes, and tables. A table's columns fit their content: a short column such as a `#` column stays narrow, and long text gets the rest of the page width and wraps. A table is never wider than the page.
- Task lists, with their check boxes.
- Code blocks, with line numbers down the left side. Long lines wrap to the width of the block, so there is no sideways scrolling; a wrapped line keeps one line number, and its continuation lines start under its text, not under the numbers. The first line sits at the top of the block. A block that names its language (for example ` ```python `) is shown with syntax colors. Point at a code block to see its **Copy** button in the top-right corner. Copy takes the code exactly as written, without the wrapping; after a copy the button reads **Copied** for a moment (screen readers hear "Copied").
- Raw HTML in the file, such as `<b>` or `<script>`, is shown as plain text. Nothing in it runs.
- **No math.** Skimmark shows standard Markdown, which has no math. Text such as `$x^2$` or `$$x^2$$` shows exactly as typed, dollar signs included. Prices and shell variables such as `$HOME` also stay as plain text.
- **"Could not render this part".** If Skimmark cannot format one part of a file, for example a link with no text such as `[](https://example.com)`, it never hides that part. You see a dashed box with the note **Could not render this part** and the part's text exactly as it is in the file. The rest of the page formats as usual. That part is read-only and saving keeps it as it is on disk; see [When editing is off](document-lock.md).
- Broken Markdown shows as text instead of breaking the page. A code block that is never closed runs to the end of the file, so everything after its opening line shows as code. If a file cannot be formatted at all, Skimmark shows its plain text instead of a blank page.

## Frontmatter

Many AI-written files start with a block of settings between two `---` lines, called frontmatter:

```
---
title: Plan for Jane Doe
status: draft
tags: [planning, q4]
---
```

- Skimmark shows it as a small two-column table (name and value) at the top of the page, and the rest of the file below it. The `---` lines and the raw settings text are not repeated in the page.
- Nested values show on one line, for example `{owner: Jane Doe, tags: [planning, q4]}`. Dates and numbers show as written.
- **Collapse and expand.** Click the table's header, or move to it with Tab and press Enter. The table shrinks to one line with its first three entries, for example `title: Plan for Jane Doe · status: draft · tags: [planning, q4]`. Do the same again to expand it. The table starts expanded each time a file opens; this choice is not saved.
- **Invalid frontmatter.** If the block is not valid YAML, or is not a list of names and values, you see its raw text in a box labelled "Invalid frontmatter". The rest of the file still shows.
- **Edit raw.** Under the table (or the invalid text) is an **Edit raw** button for changing the frontmatter's text. See Editing and saving a file.
- An empty block (two `---` lines with nothing between) shows nothing. The block only counts as frontmatter if `---` is the very first line and a later line is exactly `---`.

## Images

- **Images next to the file** load and fit the page width. Paths are relative to the file's folder, for example `![Diagram](img/diagram.png)`; a title (`![Diagram](img/diagram.png "Title")`) is optional. Both `/` and `\` work, and so do `file:` addresses.
- Supported types: PNG, JPEG, GIF, WebP, SVG, BMP, ICO, and AVIF, up to 20 MB each.
- **Missing images.** If an image is not there, is not an image file, or is too large, you see an outlined box with the image's description and its path.
- **Web images** (`http://` or `https://`) are not loaded. You see a box with the address instead. Skimmark does not connect to the internet to show a file.

## Links

- **Web and email links** (`http`, `https`, `mailto`) open in your default browser or email app.
- **Links to other Markdown files**, such as `[Plan](notes/plan.md#goals)`, open the file in a tab, just as if you had opened it yourself. If the file is not there, you see "File not found:" followed by the path.
- **All other links** do nothing, for example links to other kinds of files, `#section` links within the page, and unusual addresses such as `ftp:`.

## What it does not do yet

- **Keeping your place on reload.** When an open file changes on disk, its tab updates by itself and keeps your place in the page (by text, in the tab on screen; files over about 100,000 characters keep the scroll position instead). See [When a file changes on disk](live-updates.md).
