# org-modern: Text-based visual styling for Emacs Org

> org-modern gives Org buffers visual treatment for headings, tags, tables, and source blocks through font locking and text properties. It is a good fit for users who want an integrated appearance without replacing editable text with generated graphics.

**minad/org-modern** — :unicorn: Modern Org Style

- Repository: https://github.com/minad/org-modern
- Stars: 1,960 · Forks: 51
- Language: Emacs Lisp
- License: GPL-3.0
- Published: 2026-10-16 · Updated: 2026-10-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/minad-org-modern

## Why org-modern changes more than Org headings

org-modern addresses the visual density of a conventional Org document without changing the underlying Org syntax into graphics. It targets headings, keywords, tables, and source blocks, so the result is a consistent buffer presentation rather than a collection of unrelated headline decorations. The package is intended for Emacs users who spend substantial time reading and editing Org files and want tags, dates, emphasis markers, and related syntax to have clearer visual hierarchy.

The implementation uses font locking and text properties. That distinction matters. Text properties can affect how existing characters appear while those characters remain available for normal editing and interaction. According to the README, styled elements such as dates and tags stay editable. This makes org-modern different from solutions that replace visible content with rendered graphics.

The tradeoff is equally concrete. Visual layout depends on the selected fonts. The `variable-pitch` and `fixed-pitch` families should combine with approximately equal height, and `org-modern` attempts to adjust tag labels using font height. An installation can therefore behave differently under font families whose proportions, symbols, or metrics differ from those expected by the author.

## How font locking preserves editable Org text

The package applies presentation through Emacs font locking and text properties. Based on the repository layout, the functional implementation is concentrated in `org-modern.el`, while `example.org` serves as a document for exercising its styling. The README does not describe a separate rendering service or an image-generation stage. Presentation is attached to the text in the Org buffer.

That design permits selective control. The `org-modern` customization group allows individual syntax elements to be disabled or modified. For example, a user can keep the package for table and block styling without accepting every headline or timestamp treatment. The README specifically notes that styling such as `org-modern-timestamp` can be disabled when only the headline behavior normally associated with `org-superstar` is wanted.

Agenda display is part of the scope as well. The per-buffer configuration adds `org-modern-agenda` to `org-agenda-finalize-hook`. Global mode alone establishes styling for Org buffers, while the agenda hook is shown separately because agenda entries require their own finalization step. The README does not document rollback, migration commands, or automatic conflict detection for other packages.

## Installing from ELPA or MELPA and enabling Org styling

The README identifies GNU ELPA and MELPA Releases as package sources. After package setup is available in Emacs, install `org-modern` interactively with `M-x package-install`, then select `org-modern` as the package name. The package does not need to be loaded from the repository directory for this installation route.

The shortest documented activation is `M-x org-modern-mode` inside an Org buffer. This is the best first use because it limits the change to one document and makes visual conflicts easy to notice. The README does not provide a standalone executable, so there is no command-line launch procedure to follow.

Use the following per-buffer configuration to enable the mode automatically and include agenda styling:

```emacs-lisp
(add-hook 'org-mode-hook #'org-modern-mode)
(add-hook 'org-agenda-finalize-hook #'org-modern-agenda)
```

The first hook activates `org-modern-mode` whenever Org mode starts. The second asks `org-modern` to style finalized agenda content. A user who prefers one explicit setting for all Org buffers can instead use:

```emacs-lisp
(with-eval-after-load 'org (global-org-modern-mode))
```

This global setup defers package loading until Org is loaded. It is convenient for a stable Emacs configuration, but the per-buffer route gives clearer isolation when checking font rendering or package interactions.

## Font choices, screenshot configuration, and first inspection

Before judging the package, configure fonts whose line metrics are compatible. The README recommends Iosevka variants and names `Iosevka Term Curly` as an example. Its larger configuration also separates `variable-pitch`, `default`, and `org-modern-symbol` faces, showing that package styling participates in the wider face system rather than defining every visual detail independently.

The following excerpt comes from the documented extensive setup. The font-selection lines are comments in the README, so uncomment the relevant faces and adjust them to fonts installed on the system:

```emacs-lisp
(set-face-attribute 'default nil :family "Iosevka")
(set-face-attribute 'variable-pitch nil :family "Iosevka Aile")
(set-face-attribute 'org-modern-symbol nil :family "Iosevka")
```

After applying a font setup, open `example.org`, run `M-x org-modern-mode`, and inspect headings, TODO keywords, tables, source blocks, tags, and emphasis markers. Font-dependent effects are most likely to appear in tag labels because `org-modern-mode` adjusts their display using font height. The README also recommends a `line-spacing` value between 0.1 and 0.4, but it does not state that this setting is required.

## Known mode conflicts and cases where org-modern is unsuitable

The README documents several genuine conflicts. With `org-indent-mode` enabled, `org-modern` disables its block prettification in the fringe. `org-num-mode` interferes with TODO keyword prettification. `visual-wrap-prefix-mode` uses the `wrap-prefix` text property that `org-modern` also uses, so enabling both can produce unwanted interaction. `visual-line-mode` may create line wraps in headline tags.

These are not hypothetical quality preferences. They define where the package should not be enabled without checking the surrounding Emacs setup. An existing configuration centered on `visual-line-mode` should be tested on headline tags first. A workflow that requires both `org-indent-mode` and `org-modern` source-block framing needs a different block-styling mechanism or an explicit trade-off.

Font dependence is another boundary. The text-property approach does not provide rounded corners and cannot offer the same graphic freedom as SVG-based tags. The README does not document terminal rendering guarantees, GUI-only behavior, accessibility testing, or compatibility with every Org version. Those points should not be inferred from package installation.

## org-modern compared with SVG tags and headline-only packages

The closest documented alternative for tags is `svg-tag-mode`. Nicholas Rougier's package inspired org-modern's tag appearance, but the implementation approaches differ. `svg-tag-mode` uses SVG images, while `org-modern` uses Emacs box text properties. The README describes the text-property route as more efficient and notes that dates and tags remain editable and easy to interact with.

The packages can be combined when both visual forms are acceptable. In that arrangement, `svg-tag-mode` supplies SVG tags, while table and source-block styling comes from `org-modern`. If visual flexibility matters more than text editability, rounded tag corners are a direct reason to retain or choose the SVG approach. Emacs's `prettify-symbols-mode` is another documented option for styling individual custom keywords rather than the wider set of Org elements.

For headline presentation, `org-superstar` and `org-bullets` are older alternatives. The README characterizes them as more limited and mainly concerned with headings and lists. `org-superstar` uses character composition, whereas `org-modern` relies on text properties. org-modern can act as a full replacement for those headline-focused packages, while retaining its table and block treatment.

## Distribution, licensing, and maintenance constraints

org-modern is available through GNU ELPA and MELPA Releases. The README also links to MELPA Snapshots, but it presents ELPA and MELPA Releases as the installation choices for ordinary users. There are no GitHub releases, so the repository release list does not provide a separate versioned release history to consult.

The project is licensed under GPL-3.0. For an engineering organization, that identifier establishes which license text applies and supports an internal review of redistribution and integration obligations. This article does not interpret the license or provide legal advice.

The repository is not archived, and its last push was on 2026-08-18. That date indicates recent repository activity, but the repository has no GitHub releases. The README does not promise release cadence, compatibility guarantees, long-term support, or a migration policy for Emacs and Org upgrades. Upgrade cost is therefore best evaluated through package source, installed Emacs version, and local configuration conflicts rather than inferred from release metadata.

## Conclusion

Adopt org-modern if you want broad Org presentation with minimal generated graphics and can accept its font and mode conflicts. Do not choose it if rounded SVG tags, persistence under incompatible wrap modes, or source styling alongside org-indent-mode is a firm requirement. Verify first that your variable-pitch and fixed-pitch fonts align, then inspect tables, TODO keywords, tags, and agenda output in your normal editing setup.

## FAQ

### How do I install and enable org-modern in Emacs?

Install it from ELPA or MELPA with `M-x package-install`, select `org-modern`, and run `M-x org-modern-mode` in an Org buffer. You can also enable it globally with `(with-eval-after-load 'org (global-org-modern-mode))`.

### Does org-modern keep Org tags and dates editable?

Yes. The README says org-modern styles text with text properties, allowing elements such as dates and tags to remain editable and easy to interact with.

### Which Emacs modes conflict with org-modern?

The documented conflicts are `org-indent-mode`, `org-num-mode`, `visual-wrap-prefix-mode`, and `visual-line-mode`. Their effects range from disabled fringe block styling to interference with TODO keywords, the `wrap-prefix` property, and headline tag wrapping.

## Sources

- [Issues](https://github.com/minad/org-modern/issues)
- [License: GPL-3.0](https://github.com/minad/org-modern/blob/main/LICENSE)
- [minad/org-modern on GitHub](https://github.com/minad/org-modern)
- [README](https://github.com/minad/org-modern/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/minad-org-modern
