> ## Documentation Index
> Fetch the complete documentation index at: https://docs.meshbrow.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Fingerprints

> How Meshbrow generates realistic browser identities

# Fingerprints

A **fingerprint** is a unique set of browser properties that make each session look like a distinct, real user. Meshbrow generates realistic, internally consistent fingerprints for each session so your agents browse naturally without triggering bot detection.

## What Gets Fingerprinted

| Category       | Properties                                             |
| -------------- | ------------------------------------------------------ |
| **Canvas**     | Unique pixel rendering noise                           |
| **WebGL**      | Vendor, renderer, shader precision                     |
| **Audio**      | AudioContext sample noise                              |
| **Navigator**  | platform, languages, hardwareConcurrency, deviceMemory |
| **Screen**     | Resolution, colorDepth, pixelRatio                     |
| **Fonts**      | Installed font list                                    |
| **Plugins**    | Chrome PDF, Flash (legacy)                             |
| **User-Agent** | Browser version, OS info                               |

## Consistency

Meshbrow ensures all fingerprint properties are internally consistent:

* **OS match**: A `Win32` platform gets Windows fonts, Windows UA, DirectX WebGL
* **Hardware match**: Low `hardwareConcurrency` (2) gets lower `deviceMemory` (4)
* **Geo match**: US proxy gets `en-US` locale and `America/*` timezone
* **Version match**: All Chrome version strings are identical across properties

## Fingerprint Modes

### Auto (Recommended)

```typescript theme={null}
const session = await client.sessions.create({
  fingerprint: 'auto',
});
```

Generates a completely random, realistic fingerprint. Best for most use cases.

### Custom

```typescript theme={null}
const session = await client.sessions.create({
  fingerprint: {
    platform: 'MacIntel',
    locale: 'en-US',
    timezone: 'America/New_York',
    viewport: { width: 1440, height: 900 },
  },
});
```

Override specific properties. Meshbrow fills in the rest consistently.

### From Profile

```typescript theme={null}
const session = await client.sessions.create({
  profileId: 'prof_x9y8z7w6', // Uses profile's fingerprint prefs
});
```

## Detection Tests

Meshbrow fingerprints pass:

* ✅ [CreepJS](https://abrahamjuliot.github.io/creepjs/) — Advanced fingerprinting
* ✅ [FingerprintJS](https://fingerprintjs.github.io/fingerprintjs/) — Industry standard
* ✅ [BotD](https://fingerprint.com/products/bot-detection/) — Bot detection
* ✅ [nowsecure.nl](https://nowsecure.nl) — Stealth test
* ✅ [sannysoft.com](https://bot.sannysoft.com) — Comprehensive checks
