4
11
Fork
You've already forked hyperorg
5
Hyperorg converts org-files and especially orgroam-v2-files into html-files.
Python 100%
Find a file
2026年01月04日 19:24:08 +01:00
example feat: Support inline Latex for Math expressions 2025年08月31日 09:48:06 +02:00
LICENSES doc: Add contributing info, improved license and readme 2024年03月17日 21:52:30 +01:00
misc build: Release 0.1.0 2024年03月19日 09:38:53 +01:00
src/hyperorg feat: Support inline Latex for Math expressions 2025年08月31日 09:48:06 +02:00
tests feat: Support inline Latex for Math expressions 2025年08月31日 09:48:06 +02:00
.gitignore feat: Support inline Latex for Math expressions 2025年08月31日 09:48:06 +02:00
CHANGELOG.md feat: Support inline Latex for Math expressions 2025年08月31日 09:48:06 +02:00
CONTRIBUTING.md doc: Branching model and comparison to similar tools 2024年03月22日 15:25:30 +01:00
pyproject.toml feat: Support inline Latex for Math expressions 2025年08月31日 09:48:06 +02:00
README.md doc: Readme update about donations 2026年01月04日 19:24:08 +01:00

Hyperorg - An Org to HTML converter

Hyperorg converts files from GNU Emacs's Org Mode and Org-roam into HTML format. The resulted HTML files are intended for serverless local use. The creation of Hyperorg was driven by the experience that there is no known solution available to reliably handle the ID-Links in Org-roam v2 nodes. See the example and read the sections about benefits compared to similar tools and usage for further details.

Status of the project

It is active and in constant development implementing new features and fixing bugs. See milestones about what is coming and the changelog about what has been. Don't hesitate to voice your wishes and opinions by utilizing the issue section.

January 2026

The Team

The initial developer and sole maintainer is buhtz.

Donations are collected via Liberapay and Ko-fi, but going to him as a person, not a specific project, though much of the support also benefits this project.

Technologies & Standards

Table of contents

Installation

There are two ways to install this application: For users and for developers contributing to the application's development.

Regular installation for users

See the Releases section or run the following command to install the latest stable release from upstream repository:

$ pipx install https://codeberg.org/buhtz/hyperorg/archive/v0.1.0.zip

If pipx is not available on your system check your GNU/Linux distributions package repository or install it from PyPi (pip install pipx).

Hyperorg is not yet available in a GNU Linux distribution and there are no plans to release it on PyPi.

Editable installation for developers to contribute

First of all fork/clone/copy the repository to your local machine.

$ git clone https://codeberg.org/hyperorg/buhtzology.git
$ cd hyperorg

Use a virtual environment and the extra [develop].

# Create the environment
$ python3 -m venv .venv
# Activate the environment
$ source .venv/bin/activate
# Install
$ pip3 install --editable .[develop]

When you are finished with your working session, don't forget to deactivate the environment.

$ deactivate

Usage

$ hyperorg ~/orgfolder ~/htmlfolder

This will take all *.org files in the folder ~/orgfolder and store them converted to HTML in ~/htmlfolder. Open the index.html file in the output folder to see the result.

These are all available options:

usage: hyperorg [-h] [--hardlinks] [-s] [-v] [-d] [--version] inputdir outputdir
positional arguments:
 inputdir Source directory with org-files.
 outputdir Destination directory for html-files.
optional arguments:
 -h, --help show this help message and exit
 --hardlinks Use hardlinks instead of symlinks for images and other attachments in the input directory.
 -s, --show Open result in default browser.
 -v, --verbose Give detailed information.
 -d, --debug Debug output.
 --version show program's version number and exit

Benefits compared to similar tools

  • Functions out of the box, no configuration needed.
  • Operates as a standalone application, eliminating the requirement for Emacs.
  • Fairly resilient when dealing with parser issues.
  • Fairly resilient managing dead and problematic links which are a common phenomenon when working with a constantly evolving Zettelkasten or personal wiki.
  • Generates a comprehensive index of all nodes.
  • Adhers to World Wide Web Consortium (W3C) standards for HTML5 and CSS (<!DOCTYPE html>).

The reason alternative tools may not meet these criteria could also stem from the author of Hyperorg encountering difficulties in comprehending or managing these functionalities, as well as their documentation. However, this does not necessarily imply that alternative tools do not actually provide these functions.

How to ask questions, report bugs or suggest new features?

The project is in its nascent stage and currently has a modest user base. Any issues, questions, or discussions can be directed to the Issues section. In addition reporting bugs and requesting features, this section accommodates all inquiries and conversations related to the project's development and usage.

Donations

Please see team section.

Contributing

Please see CONTRIBUTING for details about how to contribute to the project.

The following communities have supported this project with contributions to discussions, tips, other valuable contributions and also inspirations.

Example

On the left side of this screenshot, an Emac's window displaying an Org buffer can be seen, while on the right side, the same content is prestend in HTML format. Example Screenshot

Here you can observe the identical content presented in both raw Org and HTML formats.

Org HTML
:PROPERTIES:
:ID: 13ec1e89-abc9-4d43-a4a4-3005a1c9dfc7
:END:
#+title: Foo
#+date: [2022年03月09日 Mi 09:30]
* Introduction
This node is named "foo" and should link to "bar".
This is the link: [[id:e4bd446b-216b-4e34-8d10-428b6fa5e257][bar]]
* H1 Heading
** H2 Heading
Governments of the Industrial World, you weary giants of flesh and steel, I
come from Cyberspace, the new home of Mind. On behalf of the future, I ask
you of the past to leave us alone.
- You are not welcome among us.
- You have no sovereignty where we gather.
We have no elected government, nor are we likely to have one, so I address
you with no greater authority than that with which liberty itself always
speaks.
1. I declare the global social space we are building to be naturally
 independent
2. of the tyrannies you seek to impose on us.
Source: [[https://www.eff.org/de/cyberspace-independence]]
** A https link
[[https://codeberg.org/buhtz/hyperorg][The "hyperorg" repository]]
* About backlinks
See the autogenerated backlinks in the next section. The node "bar" does link
to this node "foo".
<!DOCTYPE html>
<html lang="de">
<head>
 <meta name="generator" content="hyperorg" />
 <meta name="generator_version" content="0.1.0" />
 <meta name="generator_website" content="https://codeberg.org/buhtz/hyperorg" />
 <meta charset="UTF-8" />
 <link rel="stylesheet" href="style.css" />
 <link rel="stylesheet" href="pygments.css" />
 <title>Foo</title>
</head>
<body>
 <nav>
 <ul>
 <li><a href="index.html">Index</a> (1013)</li>
 <li><a href="index__filetag__no_tags_.html">(no tags)</a> (514)</li>
 <li><a href="index__filetag_Bib.html">Bib</a> (277)</li>
 <li><a href="index__filetag_Wiki.html">Wiki</a> (166)</li>
 <li><a href="index__filetag_Meta.html">Meta</a> (43)</li>
 <li><a href="index__filetag_Project.html">Project</a> (19)</li>
 </ul></nav>
 <main>
 <h1>Foo</h1>
 <section>
 <header><div><span class="label">date:</span>&nbsp;[2022年03月09日 Mi 09:30]</div> </header>
<h2>Introduction</h2>
<p>This node is named &quot;foo&quot; and should link to &quot;bar&quot;. This is the link: <a href="20240319084651-bar.html">bar</a></p>
<h2>H1 Heading</h2>
<h3>H2 Heading</h3>
<p>Governments of the Industrial World, you weary giants of flesh and steel, I come from Cyberspace, the new home of Mind. On behalf of the future, I ask you of the past to leave us alone.</p>
<ul>
<li>You are not welcome among us.</li>
<li>You have no sovereignty where we gather.</li>
</ul>
<p>We have no elected government, nor are we likely to have one, so I address you with no greater authority than that with which liberty itself always speaks.</p>
<ol>
<li>I declare the global social space we are building to be naturally independent</li>
<li>of the tyrannies you seek to impose on us.</li>
</ol>
<p>Source: <a target="_blank" rel="noopener noreferrer" href="https://www.eff.org/de/cyberspace-independence">https://www.eff.org/de/cyberspace-independence</a></p>
<h3>A https link</h3>
<p><a target="_blank" rel="noopener noreferrer" href="https://codeberg.org/buhtz/hyperorg">The &quot;hyperorg&quot; repository</a></p>
<h2>About backlinks</h2>
<p>See the autogenerated backlinks in the next section. The node &quot;bar&quot; does link to this node &quot;foo&quot;.</p>
 </section>
 <section>
 <hr />
 <h2>Backlinks</h2>
<ul>
<li><a href="20240319084651-bar.html">bar</a></li>
</ul>
 </section>
 </main>
 <footer>
 Generated with <a href="https://codeberg.org/buhtz/hyperorg">hyperorg</a> 0.1.0 on Di 19 Mär 2024 09:03:51
 </footer>
</body>
</html>