# @asciidoctor/core

> Asciidoctor.js: AsciiDoc in JavaScript powered by Asciidoctor

Latest version **4.1.0** (published 2026-09-22) · MIT license · 0 weekly downloads

## Install

```sh
npm install @asciidoctor/core
pnpm add @asciidoctor/core
yarn add @asciidoctor/core
bun add @asciidoctor/core
```

## Health

**Score 75/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; has provenance; recently updated; high maintenance score; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 4.1.0 |
| Published | 2026-09-22 |
| First published | 2019-03-24 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=20 |
| Dependencies | 0 |
| Unpacked size | 3.2 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 802 |
| Maintainers | mojavelinux, ggrossetie, obilodeau |
| Keywords | asciidoc, asciidoctor, javascript, library |

## Links

- npm: https://www.npmjs.com/package/@asciidoctor/core
- Repository: https://github.com/asciidoctor/asciidoctor.js
- Issues: https://github.com/asciidoctor/asciidoctor.js/issues
- npm.io page: https://npm.io/package/@asciidoctor/core

## Alternatives

- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) — 3.7M weekly downloads
- [solid-js](https://npm.io/package/solid-js.md) — 2.7M weekly downloads
- [expo-glass-effect](https://npm.io/package/expo-glass-effect.md) — 2.5M weekly downloads
- [nanoassert](https://npm.io/package/nanoassert.md) — 780.8K weekly downloads
- [@ffmpeg/ffmpeg](https://npm.io/package/@ffmpeg/ffmpeg.md) — 529.5K weekly downloads

## Recent versions

- 4.1.0 (latest) — 2026-09-22
- 4.0.0-alpha.6 (testing) — 2026-06-03
- 2.2.9 (latest-2) — 2026-04-29
- 4.0.11 — 2026-08-18
- 4.0.10 — 2026-08-17
- 4.0.9 — 2026-08-16
- 4.0.8 — 2026-08-06
- 4.0.7 — 2026-07-31
- 4.0.6 — 2026-07-26
- 4.0.5 — 2026-07-21
- 4.0.4 — 2026-07-15
- 4.0.3 — 2026-07-13
- 4.0.2 — 2026-07-06
- 4.0.1 — 2026-07-01
- 4.0.0 — 2026-06-22
- … 40 more at https://npm.io/package/@asciidoctor/core/versions

## README

# Asciidoctor core

This package provides a native JavaScript implementation of Asciidoctor.
The code was generated from the Ruby source using [Claude Code](https://claude.ai/code) (claude-sonnet-4-6) and reviewed by a human.
It is a pure ESM library that exposes the same functionality:

* parser
* built-in converters
* extensions

The API is asynchronous: all parsing and conversion operations return a `Promise`.

## Requirements

Node.js >= 24

## Install

```console
$ npm i @asciidoctor/core --save
```

## Usage

Here is a simple example that converts AsciiDoc to HTML5:

**sample.js**

```javascript
import { convert } from '@asciidoctor/core' // ①

const content = 'https://asciidoctor.org[*Asciidoctor*] running on Node.js!'
const html = await convert(content) // ②
console.log(html) // ③
```
1. Import `convert` from the Asciidoctor native library (ESM, named export)
2. Convert AsciiDoc content to HTML5 — the call returns a `Promise` and must be awaited
3. Print the HTML5 output to the console

Save the file as _sample.js_ and run it using the `node` command:

```console
$ node sample.js
```

You should see the following output in your terminal:

```html
<div class="paragraph">
<p><a href="https://asciidoctor.org"><strong>Asciidoctor</strong></a> running on Node.js!</p>
</div>
```

### Convert a file

**convert-file.js**

```javascript
import { convertFile } from '@asciidoctor/core'

const html = await convertFile('document.adoc', { safe: 'safe' })
console.log(html)
```

### Load without converting

Use `load` when you need to inspect the parsed document model before (or instead of) converting:

**load.js**

```javascript
import { load } from '@asciidoctor/core'

const doc = await load('== Hello, World!\n\nThis is Asciidoctor core.')
console.log(doc.getTitle())    // Hello, World!
console.log(doc.getBlocks())   // array of top-level blocks
const html = await doc.convert()
console.log(html)
```

## Changelog

Refer to the [CHANGELOG](https://github.com/asciidoctor/asciidoctor.js/blob/main/CHANGELOG.adoc) for a complete list of changes.

---
_Source: https://npm.io/package/@asciidoctor/core · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
