HTML Parser

Upstream URL


Gary Warren King <>


Gary Warren King <>


MIT Style license for the packaging, AllegroServe license for the code.


This is unmaintained code. Gary King is no longer an active Lisper. Good luck out there. If you'd like to take it over, let me know.


CL-HTML-PARSE is a slash and burn port of Franz's phtml HTML parser.

I made a few small changes to the source mainly involving the call to excl:intern* in collect-tag. In particular, all tags are now string-upcased before being interned. There is probably a better solution but I'm not very Allegro savvy.

Any questions or concerns should be directed to me, Gary Warren King at

If the feature :use-acl-compat is set, then cl-html-parse will depend on it; otherwise, it will use its own package and if* definitions.

Example #1

<head><title>Parsing HTML is Phun</title></head>
<h1>Why is it phun?</h1>
<p>Parsing HTML is phun because angle brackets are better than parentheses.</p>


((:HTML (:HEAD (:TITLE "Parsing HTML is Phun"))
  (:BODY (:H1 "Why is it phun?")
    "Parsing HTML is phun because angle brackets are better than parentheses."))))

Example #2

(html-parse:parse-html <file>)


((:HTML ...))

Dependencies (0)

    Dependents (1)

    • gendl
    • GitHub
    • Quicklisp