mrkeyoor.com_
Fri 14 Aug 16:46 UTC
Dev Toolsevaluationupdated 14 Aug 2026

rhwp

rhwp is primarily a Korean-language project, with a substantial English README but Korean kept as the source of truth for the roadmap and several deeper guides. It is a Rust and WebAssembly toolkit for opening, rendering, editing, searching, filling, and converting South Korea's HWP and HWPX documents in browsers, command-line workflows, editor extensions, and AI agents.

Verdict

rhwp is the most ambitious open-source HWP project to evaluate when the closed format is blocking a web, automation, or agent workflow. Its distribution options, loss checks, test corpus, and active issue investigation are unusually serious, but the open layout regressions make independent fidelity testing mandatory. Adopt it for extraction, search, controlled editing, and reviewed rendering; do not quietly substitute it for Hancom in documents where pagination itself carries meaning.

Setup4/5Demo, extensions, npm packages, and native archives cover common starts
Docs4/5Extensive English overview, with important deeper material in Korean
Community4/5Heavy current issue investigation and more than 40 cited contributors
Maturity3/5Deep test suite and releases, but fidelity work remains pre-1.0

Who it’s for

Web developers who must display or edit HWP and HWPX files without a proprietary desktop dependency.
Teams processing Korean government, school, court, or business documents through Rust, JavaScript, CLI, or MCP workflows.
Claude Code and other MCP users who need agents to inspect, search, fill, or convert HWP forms locally.
Open-format advocates willing to test difficult documents against Hancom's own rendering before deployment.

Who it’s NOT for

Legal, archival, or print workflows requiring pixel-identical output without document-by-document checks: open issues #4770 and #4024 document pagination divergence and text that can fall outside a rendered page.
Teams expecting every HWPX edit to preserve layout exactly: issue #4599 tracks 242 files with in-page drift after an HWPX save cycle.
Browser deployments that cannot control Korean font availability: issue #4741 shows an installed KoPubBatang face being replaced with a monospaced fallback in the Canvas2D path.
English-only maintainers who need all design and troubleshooting material translated: the English README exists, but it explicitly says the roadmap source of truth is Korean and links the MCP integration guide as Korean.
Users needing unrestricted HML round trips: the README limits support to corpus-verified HWPML 2.9 and 2.91 structures and blocks lossy saves when pictures or external resources cannot be preserved.

Setup reality

Trying rhwp is easier than its large Rust codebase suggests. A live browser demo and published browser or VS Code extensions require no build, while release archives provide CLI binaries for Linux x86_64, macOS on Intel and Apple Silicon, and Windows x86_64, plus checksums. JavaScript projects can install @rhwp/core or the iframe-based @rhwp/editor; MCP hosts need the binary on PATH and one server entry. Contributors face the heavier path: pinned Rust 1.93.1, Docker for the WASM build, Node.js 18 or newer for Studio, several renderer choices, and a test and visual-regression system sized for a format with many layout edge cases.

Opening a format that still matters

HWP is not an obscure legacy curiosity in South Korea. Government agencies, schools, courts, and companies still exchange documents in the format, yet most web and cross-platform software cannot do much with them. rhwp attacks that gap with a Rust parser, document model, layout engine, serializers, and several rendering backends compiled for native use and WebAssembly.

The project's main documentation is Korean. A detailed English README covers the public feature set, installation, architecture, and examples, but the project says its roadmap source of truth remains Korean. Some deeper material, including the MCP integration guide, is also Korean. That is workable for an English-speaking evaluator, but it will matter when a team has to debug an unfamiliar layout rule or contribute a fix.

rhwp handles HWP 5.0, XML-based HWPX, and a constrained subset of HML. It parses paragraphs, tables, images, equations, charts, headers, footers, master pages, and footnotes. Output can go to SVG, PNG, PDF, browser canvases, or back into supported document formats. A web editor adds text and table operations, while compatibility methods imitate 30 actions from Hancom's hwpctl interface.

More than a document viewer

There are several credible ways to use the project. Someone who only needs to inspect a file can open the hosted demo or install a Chrome, Edge, Firefox, or VS Code extension. A web product can embed the full editor through @rhwp/editor, or call the lower-level @rhwp/core WebAssembly API and render individual pages as SVG. Native release archives expose inspection and export commands without requiring a Rust build.

The built-in MCP server is particularly practical for Korean document automation. Claude Code or another MCP host can ask for document metadata, search for text, locate cells, fill named fields, and convert files. Large documents can remain open in a session so repeated queries do not reparse the source. This is a better interface for an agent than asking it to infer a binary format from extracted garbage. It also keeps the document processing local to the user's executable.

The internals show unusual care for preservation. HML support is intentionally limited to structures verified against a real corpus. A preflight check permits saving an HML-origin document only when unsupported pieces will not be lost, and blocks loss-prone cases such as pictures or external resources. Direct PDF similarly rejects certain effects and recommends the SVG compatibility route rather than pretending every visual feature survived. Those failure modes are inconvenient in the right way.

Rendering breadth brings rendering risk

The README describes four related rendering routes: legacy and layered SVG, browser Canvas2D, CanvasKit, and native Skia for PNG or direct PDF. A shared paint representation tries to keep their ordering consistent. Canvas2D remains the compatibility default for Studio, browser extensions, embeds, and VS Code, while an opt-in automatic mode selects CanvasKit only after document and font checks pass.

This engineering is substantial, but it should not be confused with finished fidelity. Open issue #4024 documents paragraphs placed beyond a page boundary and therefore missing visually even though text extraction still sees them. Issue #4770 describes a change that spread nine foreground images across nine pages and increased a real document from 246 to 260 pages, while the Hancom reference had 235. These are not cosmetic differences for a filing, a printed form, or a page-specific citation.

Save fidelity also needs testing. Issue #4599 tracks 242 HWPX files with in-page layout drift after a save ladder, following a corpus sweep of thousands of documents. Issue #4741 shows another practical failure: a Korean font installed on Windows was omitted from the local-font inventory and replaced with a monospaced fallback in the Canvas2D path. Font metrics then change line breaks, table heights, and pagination.

The project's public issues are unusually specific, with reproduction data, bisects, corpus identifiers, measurements, and proposed acceptance criteria. That increases confidence in the maintenance process, but it also gives buyers a clear warning: format coverage and exact page composition are different achievements.

Setup ranges from trivial to specialist

The quickest trial takes minutes. Use the demo, add an extension, install one npm package, or download a release archive and run rhwp capabilities. Releases provide Linux x86_64, macOS Intel and Apple Silicon, and Windows x86_64 binaries with SHA-256 checksums. An MCP setup then needs only the executable on PATH and a short server configuration.

Building the whole system is more demanding. The repository pins Rust 1.93.1, uses Docker to standardize the WASM toolchain, and needs Node.js 18 or newer for the editor. Native Skia features, several output backends, browser behavior, open fonts, and visual comparisons all expand the test matrix. The README cites more than 3,400 Rust tests plus frontend, end-to-end, and visual-regression checks. Contributors should start with the onboarding guide rather than treating cargo build as the whole environment.

Release v0.8.4, published August 12, 2026, is also revealing. It removed PyPI, Node binding, package-manager, installer, container, and operating-system package channels that had been unintentionally activated in v0.8.3, while retaining npm packages, native release binaries, editor extensions, and browser extensions. The narrower policy is responsible, though it shows that distribution is still settling.

Health and the buying decision

The last push was August 14, 2026. GitHub reported 189 open issues and three open pull requests, and recent issue threads were receiving same-day investigation and fixes. The queue is large because the project tracks fine-grained renderer experiments and corpus findings, not simply user bug reports. The repository is MIT licensed and the README credits more than 40 outside contributors plus two collaborators.

rhwp is easy to recommend for reading, extraction, search, form filling, and reviewed web previews where no good open option existed. Its honest loss barriers and deep test work are real strengths. For authoritative printing or invisible round-trip editing, compare outputs against Hancom with representative documents and pin a tested release. This project is solving the hard problem in public, but its own evidence says the hard problem is not finished.

Alternatives

ProjectWhat it isPick it when
pyhwpA Python toolkit for parsing and converting HWP version 5 documents.pick this instead when a Python extraction or conversion pipeline matters more than in-browser editing and modern HWPX support.
hwp.jsA JavaScript parser focused on reading HWP files in web applications.pick this instead when you need a narrower JavaScript parser and do not need rhwp's editor, CLI, MCP server, or renderer range.
LibreOfficeA full open-source office suite with desktop document conversion and editing.pick this instead when users need a general desktop office application rather than an embeddable HWP-specific engine.

What people are saying

  1. [github-trending] edwardkim/rhwp

Sources

  1. rhwp Korean README
  2. rhwp English README
  3. rhwp v0.8.4 release
  4. Issue 4024: paragraph content rendered outside pages
  5. Issue 4599: HWPX save drift backlog
  6. Issue 4741: installed Korean font substitution
  7. Issue 4770: pagination regression investigation