How to open HWP files on Linux

Linux is where the HWP problem bites hardest: there is no vendor viewer to fall back on for most distributions, and the one importer that exists covers a version of the format that has not been current for a very long time. The good news is that the browser route works identically here, and for repeat work there are scriptable options.

Why LibreOffice disappoints here

LibreOffice does list HWP among its supported formats, which sends a lot of people down a dead end.

Its importer targets Hangul '97-era files only. Documents saved by later versions of Hancom Office use a different internal structure that the filter cannot parse, so the import fails or produces garbage even though the extension matches and the format is nominally supported.

In practice, almost every .hwp file you receive today is newer than that filter. If a document does open cleanly in LibreOffice, it is genuinely old.

What works

  1. Convert in the browser. Works on any distribution, any desktop environment, no packages to install and no dependency conflicts. Drop the file in on this page and get PDF, Word, Markdown, or plain text back.
  2. Ask for a different format. If the sender can export PDF or re-save as .hwpx, that removes the problem at the source. See HWP vs HWPX for why the newer format converts more reliably.
  3. Use a library if you are scripting. For repeat or automated work, parsing the file directly is the durable answer — more on that below.

For developers: parsing it yourself

If HWP files pass through your system regularly — a document pipeline, a research corpus, an internal tool — a browser converter is the wrong shape. You want a library.

This site is built on kordoc, an MIT-licensed Node library that parses both variants and emits Markdown, plain text, and layout SVG. It is on npm and works on Linux without native Korean dependencies, which is the usual sticking point. Our open-source licenses page lists everything we build on.

The two format variants need different handling underneath, which is worth knowing before you budget for the work:

Batch conversion from the command line

For a directory of documents, scripting against a library beats clicking through a web page. The rough shape in Node:

Read each file, call the parser, write the Markdown or text output next to it. Because the parse is pure computation with no network or display dependency, this runs fine on a headless server or in CI.

One practical caution from our own batch runs: converted output with images inlined is typically three to five times the size of the input. A directory of modest documents can produce a surprisingly large output tree, so strip or externalise images if you only need the text.

What about Wine or a virtual machine?

Running the Windows build of Hancom Office under Wine, or in a virtual machine, will work if you genuinely need to edit documents and return them as .hwp.

It is heavy for reading. If your goal is to get the content out, converting takes seconds and a VM takes an afternoon. Reserve this for the case where the original format has to survive a round trip.

Drop HWP/HWPX files here
up to 10 files · 15MB each · files are never stored

Files are processed in memory and deleted immediately after conversion. Nothing is stored on our servers.

Frequently asked questions

Does LibreOffice open .hwpx files?

No. Its Hangul filter targets the older '97-era binary format, and HWPX is a different, newer format entirely.

Is there a native HWP viewer for Linux?

Options are limited and change over time. The browser route is the most dependable, since it does not depend on a package being maintained for your distribution.

Can I convert HWP files on a headless server?

Yes, using a parsing library rather than a GUI application. The parse is pure computation and needs no display, so it runs in CI or on a server without a desktop environment.

How do I check whether a file is HWP or HWPX?

Run `unzip -l` against it. HWPX is a ZIP archive and will list its contents; the older binary HWP will report that it is not a valid archive.