This page documents hVmark v1.x. See Changelog for updates.
hVmark
hVmark is a tiny, opinionated markup language made by and for, well, me. While it's used all over this website, it's primarily used in posts in lieu of hard-coded HTML.
Inline Markers
Text Formatting
- Bold: *text*
 - Emphasis (Italics): %text%
 Strike: -text-- Underline: _text_
 
Misc.
- Soft line break: [] → <br>
 - Subheading: *// Subheading Text*
 - Subheading output: <h# id="subheading-text">// Subheading Text</h#> 
Actual heading is based on config. - Optional TOC: If two or more subheaders are found, a table of contents will be generated.  The TOC is automatically placed under the main heading (<h1>) of the page, at the top of the page if a main heading isn't present, or at the location of 
<!--HV_TOC-->. 
Links, Images, YouTube
All use the same “anchor + fangs” pattern: @@anchor^fangs^
- Links: @@https://example.com/^Link text^ 
(leave fangs empty to use the URL as text, e.g. @@https://example.com/^^) - Images: @@img:/path/file.jpg^Caption^ (85% width by default; caption optional) 
Full: @@img:/path/file.jpg[50px|25% left|right|center|blank]^Caption^ - YouTube: @@ytb:VIDEOID^Caption^ (caption optional)
 
Lists
- Dotted: one item per line starting with [+]
 - Plain: one item per line starting with [-]
 - Soft breaks are allowed inside items via []
 
Notes & Quirks
- Order matters when nesting: * and % are forgiving, but consistent nesting is recommended.
 - Inline raw HTML on a line disables hVmark parsing on that line.
 - A backslash (\) will escape an inline marker and output the literal symbol. 
(e.g., \% will output %.) - Despite the above, the symbols used for inline markers do not appear in the alt text of images, escaped or not.
 - Emojis are supported in regular text, but not in subheadings.
 - Subheadings with similar names will have duplicate IDs; the TOC generator does not add incrementing suffixes.
 - Blockquotes are not currently part of v1.
 
Changelog
Conventions
- MAJOR: breaking syntax/output changes
 - MINOR: new tokens/features (non-breaking)
 - PATCH: bugfixes, spacing, semantics
 
[2025-10-22] - v1.3.0
- Global declarations added for centralized control
 - Added subheadings token '*// Heading*' → '<h# id="…">'
 - Auto-TOC under first '<h1>/<h2>' or at '<!--HV_TOC-->'
 
[2025-09-30] - v1.2.0
- Module consolidation and general housekeeping
 - Regex tightening for text-formatting markers
 - Misc. bug fixes
 
[2025-09-09] - v1.1.0
- Escapes: '\* \% \- \_ \[]' (literal output)
 - Image size '[px|%]' and alignment 'left|right|center|blank'
 - Misc. bug fixes
 
[2025-09-05] - v1.0.0
- v1 initial: strict per-line parsing; inline HTML on a line disables hVmark on that line
 - Inline text-formatting markers
 - “Anchor + fangs” for links/images/YouTube
 - Soft line break '[]' inside lists/captions
 - Lists: '[+]' (square) and '[-]' (plain)
 - Wired root hVmark parser into existing auto-paragraphing framework
 
Demo
Put some code in the textbox and press Render; the HTML output will generate below.
hVmark v1 will be available under the MIT license... at some point in time. 
hVmark is in active use on HisVirusness.com and will be open-sourced once the grammar and tooling stabilize. It’s not a general-purpose Markdown replacement; it’s a small, strict tool I actively use and maintain.