---
title: "bpemb vs hazm"
type: "comparison"
canonical_url: "https://www.graphcanon.com/compare/bheinzerling-bpemb-vs-roshan-research-hazm"
tools: ["bheinzerling-bpemb", "roshan-research-hazm"]
---

# bpemb vs hazm

*GraphCanon updated Aug 22, 2026*

## Verdict

Pick bpemb if bpemb provides pre-trained subword embeddings using Byte-Pair Encoding for up to 275 languages, which can be beneficial in multi-lingual NLP tasks; pick hazm if hazm is a Persian NLP Toolkit used for dependency parsing, embeddings, lemmatization, normalization, POS tagging and tokenization in Python.

[bpemb](https://nlp.h-its.org/bpemb) reports 1.2k GitHub stars, 100 forks, and 6 open issues, last pushed Oct 1, 2024. [hazm](https://www.roshan-ai.ir/hazm/) has 1.4k stars, 208 forks, and 8 open issues, last pushed Apr 1, 2026. Figures are from public GitHub metadata via [bpemb's repository](https://github.com/bheinzerling/bpemb) and [hazm's repository](https://github.com/roshan-research/hazm).

| | [bpemb](/tools/bheinzerling-bpemb.md) | [hazm](/tools/roshan-research-hazm.md) |
| --- | --- | --- |
| Tagline | Pre-trained subword embeddings in 275 languages using Byte-Pair Encoding | Persian NLP Toolkit for dependency parsing, embeddings, lemmatization, normalization, POS tagging, and tokenization |
| Stars | 1,224 | 1,417 |
| Forks | 100 | 208 |
| Open issues | 6 | 8 |
| Language | Python | Python |
| Adopt for | bpemb provides pre-trained subword embeddings using Byte-Pair Encoding for up to 275 languages, which can be beneficial in multi-lingual NLP tasks. | Hazm is a Persian NLP Toolkit used for dependency parsing, embeddings, lemmatization, normalization, POS tagging and tokenization in Python. |
| Persona | - | - |
| Runtime | - | - |
| License | MIT License: Permissive free software license granting users freedom to use, modify, and distribute the software. | MIT |
| Categories | Data & Retrieval | Data & Retrieval, Model Training |

## Trust and health

_Sourced signals - not a safety guarantee. No winner column._

| | [bpemb](/tools/bheinzerling-bpemb.md) | [hazm](/tools/roshan-research-hazm.md) |
| --- | --- | --- |
| Maintenance | Dormant (18%) | Slowing (36%) |
| Days since push | 690d | 142d |
| Open issues (now) | 6 | 8 |
| Stars delta | +2 (30d) | +5 (30d) |
| Open issues delta | 0 (30d) | +1 (30d) |
| Owner type | User | Organization |
| Full report | [trust report](/tools/bheinzerling-bpemb/trust.md) | [trust report](/tools/roshan-research-hazm/trust.md) |

## Shared compatibility

- **Python**: [bpemb](/tools/bheinzerling-bpemb.md) - Python runtime; [hazm](/tools/roshan-research-hazm.md) - Python runtime

## Decision facts: bpemb

- **Requirements:** Requires Python environment to operate effectively across various multilingual applications
- **Adopt for:** bpemb provides pre-trained subword embeddings using Byte-Pair Encoding for up to 275 languages, which can be beneficial in multi-lingual NLP tasks.
- **License detail:** MIT License: Permissive free software license granting users freedom to use, modify, and distribute the software.

## Decision facts: hazm

- **Adopt for:** Hazm is a Persian NLP Toolkit used for dependency parsing, embeddings, lemmatization, normalization, POS tagging and tokenization in Python.

## Choose when

### Choose bpemb if…

- Requirements: Requires Python environment to operate effectively across various multilingual applications.
- Tags unique to bpemb: multilingual, subword-embeddings.
- When working on multilingual projects that span a vast array of languages (up to 275) where language-specific data is sparse or unavailable

### Choose hazm if…

- Tags unique to hazm: dependency-parser, lemmatization, normalization, persian-nlp.
- Also covers Model Training.
- When working exclusively with Farsi language texts where comprehensive processing tools like dependency parsing or POS tagging are required.

## When NOT to use bpemb

- If your project focuses solely on high-resource languages like English, Spanish, French where more specialized models provide better performance per task
- When the task specifically requires character-level or word-level embeddings and not subword tokenization provided by Byte-Pair Encoding (BPE)

## When NOT to use hazm

- If the project involves languages other than Persian, as Hazm lacks capabilities for multilingual support beyond Farsi.
- When advanced machine learning models requiring extensive training data and resources are necessary; Hazm provides utilities but does not include state-of-the-art models.

## Common questions

### What is the difference between bpemb and hazm?

bpemb: Pre-trained subword embeddings in 275 languages using Byte-Pair Encoding. hazm: Persian NLP Toolkit for dependency parsing, embeddings, lemmatization, normalization, POS tagging, and tokenization. See the comparison table for live GitHub stats and shared categories.

### When should I choose bpemb over hazm?

Choose bpemb over hazm when Requirements: Requires Python environment to operate effectively across various multilingual applications; Tags unique to bpemb: multilingual, subword-embeddings; When working on multilingual projects that span a vast array of languages (up to 275) where language-specific data is sparse or unavailable.

### When should I choose hazm over bpemb?

Choose hazm over bpemb when Tags unique to hazm: dependency-parser, lemmatization, normalization, persian-nlp; Also covers Model Training; When working exclusively with Farsi language texts where comprehensive processing tools like dependency parsing or POS tagging are required.

### When should I avoid bpemb?

If your project focuses solely on high-resource languages like English, Spanish, French where more specialized models provide better performance per task When the task specifically requires character-level or word-level embeddings and not subword tokenization provided by Byte-Pair Encoding (BPE)

### When should I avoid hazm?

If the project involves languages other than Persian, as Hazm lacks capabilities for multilingual support beyond Farsi. When advanced machine learning models requiring extensive training data and resources are necessary; Hazm provides utilities but does not include state-of-the-art models.

### Is bpemb or hazm more popular on GitHub?

hazm has more GitHub stars (1,417 vs 1,224). Stars measure visibility, not whether either tool fits your constraints.

### Are bpemb and hazm open source?

Yes - both are open-source projects on GitHub (bpemb: MIT, hazm: MIT).

### Where can I find alternatives to bpemb or hazm?

GraphCanon lists graph-backed alternatives at [bpemb alternatives](/tools/bheinzerling-bpemb/alternatives) and [hazm alternatives](/tools/roshan-research-hazm/alternatives) ([bpemb markdown twin](/tools/bheinzerling-bpemb/alternatives.md), [hazm markdown twin](/tools/roshan-research-hazm/alternatives.md)), ranked by typed relationship edges rather than popularity votes.

### Is there a machine-readable version of this comparison?

Yes. The markdown twin at [this comparison](/compare/bheinzerling-bpemb-vs-roshan-research-hazm.md) mirrors this page for agents and LLM crawlers, with the same stats table and FAQ answers.

### Which is better maintained, bpemb or hazm?

bpemb: Dormant. hazm: Slowing. Compare maintenance labels, days since push, and release cadence in the trust section below - stars alone do not measure maintenance.

### Where are the full trust reports for bpemb and hazm?

GraphCanon publishes per-repo trust reports with dated maintenance, provenance, and scan summaries: [bpemb trust report](/tools/bheinzerling-bpemb/trust); [hazm trust report](/tools/roshan-research-hazm/trust).

---

**Machine-readable endpoints**

- JSON: [`/api/graphcanon/graph?tool=bheinzerling-bpemb`](/api/graphcanon/graph?tool=bheinzerling-bpemb)
- LLM index: [/llms.txt](/llms.txt)
- Full corpus: [/llms-full.txt](/llms-full.txt)

_GraphCanon - The knowledge graph for AI development. https://www.graphcanon.com/_
