---
title: "Nimiq Utils"
description: "Production-ready JavaScript utilities for blockchain development. Battle-tested, type-safe, and tree-shakable."
canonical_url: "https://nimiq.dev/nimiq-utils"
---
# Nimiq Utils

> Production-ready JavaScript utilities for blockchain development. Battle-tested, type-safe, and tree-shakable.

<u-page-section description="Every utility has been battle-tested in production scenarios, from the official Nimiq Wallet to third-party integrations." title="Built for real-world applications" headline="Why Nimiq Utils">
<u-page-grid>
<u-page-card title="Performance First" variant="outline" description="Optimized algorithms and minimal overhead" icon="i-tabler:bolt">



</u-page-card>

<u-page-card title="Framework Agnostic" variant="outline" description="Works with any JS framework & SSR safe" icon="i-tabler:components">



</u-page-card>

<u-page-card title="Flexible & Great DX" variant="outline" description="Intuitive APIs designed for developer productivity" icon="i-tabler:adjustments">



</u-page-card>

<u-page-card title="Well-Documented" variant="outline" description="Comprehensive docs with examples & real-world use cases" icon="i-tabler:book">



</u-page-card>

<u-page-card title="Production Used" variant="outline" description="Powers Nimiq Wallet & other official ecosystem apps" icon="i-tabler:wallet">



</u-page-card>

<u-page-card title="Open Source" variant="outline" description="100% open source with community contributions welcome" icon="i-tabler:heart">



</u-page-card>
</u-page-grid>
</u-page-section>

<u-page-section description="See Nimiq Utils in action with real-world code snippets" title="Quick Examples">
<code-group>

```ts [address-validation.ts]
import { ValidationUtils } from '@nimiq/utils'

// Validate Nimiq address format
ValidationUtils.isValidAddress('NQ48 8CKH BA24...')
// → true

// Check if it's a user-friendly address
ValidationUtils.isUserFriendlyAddress('NQ48 8CKH BA24...')
// → true
```

```ts [address-conversion.ts]
import { AddressBook } from '@nimiq/utils'

// Convert between address formats
const userFriendly = 'NQ48 8CKH BA24 Y7R5 GXM9 PQ8R HHGJ'
const hex = AddressBook.toHex(userFriendly)
// → '84c8e...'

// Convert back to user-friendly
const address = AddressBook.fromHex(hex)
// → 'NQ48 8CKH BA24 Y7R5 GXM9 PQ8R HHGJ'
```

```ts [currency-formatting.ts]
import { FormattableNumber } from '@nimiq/utils'

// Format NIM amounts
const amount = new FormattableNumber(1.5, 5)
amount.toString() // → "1.50000"
amount.toCurrency('NIM') // → "1.50 NIM"

// Auto-format with locale
amount.toLocaleString() // → "1.50000"
```

```ts [fiat-rates.ts]
import { getExchangeRates } from '@nimiq/utils'

// Get current exchange rates
const rates = await getExchangeRates(['nim'], ['usd', 'eur'])
// → { nim: { usd: 0.012, eur: 0.011 } }

// Calculate fiat value
const nimValue = 100
const usdValue = nimValue * rates.nim.usd
```

```ts [supply-calculator.ts]
import { posSupplyAt } from '@nimiq/utils'

// Get total supply at specific time
const supply = posSupplyAt(Date.now())
// → 3000000000 (in smallest unit)

// Get supply at block height
const supplyAtBlock = posSupplyAt(1000000)
```

</code-group>
</u-page-section>

<u-page-section description="Browse all available utility modules by category" title="All Modules">
<u-page-grid>
<u-page-card title="Address Book" variant="outline" to="https://nimiq.dev/nimiq-utils/address-book">



</u-page-card>

<u-page-card title="Albatross Policy" variant="outline" to="https://nimiq.dev/nimiq-utils/albatross-policy">



</u-page-card>

<u-page-card title="Browser Detection" variant="outline" to="https://nimiq.dev/nimiq-utils/browser-detection">



</u-page-card>

<u-page-card title="Clipboard" variant="outline" to="https://nimiq.dev/nimiq-utils/clipboard">



</u-page-card>

<u-page-card title="Cookie Utilities" variant="outline" to="https://nimiq.dev/nimiq-utils/cookie-utilities">



</u-page-card>

<u-page-card title="Currency Info" variant="outline" to="https://nimiq.dev/nimiq-utils/currency-info">



</u-page-card>

<u-page-card title="Fiat API" variant="outline" to="https://nimiq.dev/nimiq-utils/fiat-api">



</u-page-card>

<u-page-card title="Formattable Number" variant="outline" to="https://nimiq.dev/nimiq-utils/formattable-number">



</u-page-card>

<u-page-card title="Installation" variant="outline" to="https://nimiq.dev/nimiq-utils/installation">



</u-page-card>

<u-page-card title="Rate Limit Scheduler" variant="outline" to="https://nimiq.dev/nimiq-utils/rate-limit-scheduler">



</u-page-card>

<u-page-card title="Request Link Encoding" variant="outline" to="https://nimiq.dev/nimiq-utils/request-link-encoding">



</u-page-card>

<u-page-card title="Staking Rewards Calculator" variant="outline" to="https://nimiq.dev/nimiq-utils/staking-rewards-calculator">



</u-page-card>

<u-page-card title="Supply Calculator" variant="outline" to="https://nimiq.dev/nimiq-utils/supply-calculator">



</u-page-card>

<u-page-card title="Tweenable" variant="outline" to="https://nimiq.dev/nimiq-utils/tweenable">



</u-page-card>

<u-page-card title="UTF-8 Tools" variant="outline" to="https://nimiq.dev/nimiq-utils/utf8-tools">



</u-page-card>

<u-page-card title="Validation Utils" variant="outline" to="https://nimiq.dev/nimiq-utils/validation-utils">



</u-page-card>
</u-page-grid>
</u-page-section>


## Sitemap

See the full [sitemap](https://nimiq.dev/sitemap.md) for all pages.
