Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Swim – Swift Markup

A DSL for building HTML documents with Swift function builders.

Currently in use on my personal website.

import Swim
import HTML

let myDocument = html(lang: "en-US") {
    head {
        meta(charset: "utf-8", content: "text/html", httpEquiv: "Content-Type")
    body(customAttributes: [ "data-foo": "bar" ]) {
        article(classes: "readme", "modern") {
            header {
                h1 {
                    "This is a great article."

            p {
                "Hello World!"
                "How are you?"

            p {
                "This is a"
                a(href: "") { "link to the Swift website" }

By generating all words in the language according to the HTML specification, we can make sure that only valid HTML can be expressed.

For example, the above would generate this HTML:

<html lang="en-US">
    <meta http-equiv="Content-Type" charset="utf-8" content="text/html" />
  <body data-foo="bar">
    <article class="readme modern">
          This is a great article.
        Hello World!
        How are you?
        This is a
        <a href="">
          link to the Swift website