My device
Connect your JUUL2 to see live battery and pod usage, lock it, ring it, and track new puffs. Shake the device until its lights pulse blue, then connect.
Import your saved JUUL2 key capture once to enable ring and live readings.
The file stays on this device. Your browser stores the verified key locally; it is never uploaded. Close the official JUUL app while using this page.
How to extract your credential JSON
Use the official JUUL web app with your own account and paired JUUL2 in desktop Chrome or Edge. If you already saved juulKeyCapture.json, import that file above.
- Open the official web app. Sign in normally. Disconnect this companion from Bluetooth, and leave the device disconnected in the official app until the capture helper is installed.
- Open the official app’s developer console. Press
Ctrl+Shift+Jon Windows/Linux or⌘+Option+Jon Mac. Copy the helper below, review it, then run it in that console. It should say “JUUL capture installed”. Run it in the official app’s tab. - Connect and ring once in the official app. Wake your JUUL, connect it there, and use its Find/ring control. The console should say “JUUL ring credential captured”. The helper observes local encryption; it sends no Bluetooth commands and uploads nothing.
- Save the JSON. In the same console run
juulKeyCapture.save(). This downloads juulKeyCapture.json. To check progress without displaying your key, runjuulKeyCapture.samples.length. - Return here and import it. Close the official app’s tab, tap Import credential JSON, select the downloaded file, then tap Connect JUUL. Your current device uses the prefilled Key ID
9d87ca9f; another device may need its own matching Key ID.
This is an independently written capture helper. The code below runs only when you paste it into the official app.
If nothing is captured: disconnect and reconnect in the official app with the helper installed, then ring again. The helper must see the key being imported; it cannot recover a key imported before installation. Reloading the official page removes the helper, so install it again before connecting. If your browser blocks console pasting, review the code and follow its displayed developer-console prompt; you can also use the downloaded file in DevTools → Sources → Snippets.
Keep the JSON private: it contains the device encryption key. Store it outside a served website folder and do not share it as a diagnostic log. A BLE event log or telemetry export is not a credential file. Run juulKeyCapture.restore() to remove the helper, or close the official app’s tab.
Connection settings
Controls
Ring and lock use authenticated JUUL2 commands. Battery and pod readings refresh while connected. A ring is confirmed when the device accepts the request.
Hit count statistics
New puff timestamps reported by your connected JUUL2 add hits to these charts. Manual hits and demo mode are also available. Detailed device history is shown separately in All device telemetry below.
Last 7 days
Recent hits
| Time | Source | Running total |
|---|---|---|
| No hits yet. | ||
GATT explorer
After connecting, every discovered service and characteristic is listed here. Read / notify / write are wired to the real Web Bluetooth handles so you can identify battery, pod, and control channels on your specific unit.
Console
Raw BLE events, reads, writes, and hit detections. Useful when pairing a new unit.
Pod & device details
| Device name | — |
|---|---|
| Device ID | — |
| Serial number | — |
| Last device puff | — |
| Firmware | — |
| Model | — |
| Manufacturer | — |
| Pod recipe / demo flavour | — |
| Pod authenticity | — |
All device telemetry
Connect with your credential to read telemetry. Missing fields appear as “Not reported”.
Device, battery & settings
| Reading | Value |
|---|
Pod & status flags
| Reading | Value |
|---|
Session & firmware image
Detailed puff records
Device history has not been read yet.
| Device time | Duration | Coil power | Loaded battery | TPM output | Stop reason / samples |
|---|---|---|---|---|---|
| No detailed puff records received. | |||||
Duration is reported in milliseconds; power and loaded battery samples use mW and mV. TPM output uses µg (total particulate matter). Summaries include stop reasons 0, 2, 4 and 5, which the official app counts as puffs; the table also shows other heater events. Sample charts use sample order; the sample interval is not established. History does not change your existing hit charts.
All device log events
No events received.
| Device time / index | Log / module / level | Decoded record |
|---|
Raw telemetry snapshots
No authenticated readings yet.
Readings and up to 1,000 log events are saved in this browser for each credential. Older events may have expired on the device. Firmware-dependent values appear only when reported; unconfirmed units and state codes are shown raw. Export contains readings and logs, without your encryption key.
How pairing works
Shake it until the lights pulse blue. Keep it within a few feet of this computer/phone.
Import your saved credential JSON once, then tap Connect JUUL and choose your device.
Ring your device, see live battery and pod usage, and track new puffs while connected.
Trouble? Bluetooth off, another app holding the connection, or an unsupported browser are the usual causes. Close the phone app, toggle Bluetooth, and retry. This page never sends your data anywhere — stats stay in this browser.