Load the script
One tag, anywhere on the page. No dependency.
Easily integrate Passly on your website
Three lines are enough to put a generator on your site.
One tag, anywhere on the page. No dependency.
A div with the passly-widget class, where the generator should appear.
The widget initialises itself, including on nodes added later.
<!-- Passly Widget --> <script src="https://passly.fr/widget.js" ></script> <div class="passly-widget" data-length="16" data-format="random" data-lang="en"></div>
A simple widget with default options
<div class="passly-widget"></div>
Generates a 24-character password with every character type
<div class="passly-widget" data-length="24" data-special="true" data-exclude-similar="true"></div>
Automatically fills a form field
<input type="text" id="my-password-field"> <div class="passly-widget" data-target="#my-password-field" data-length="20"></div>
Generates an easy-to-remember passphrase
<div class="passly-widget" data-format="passphrase"></div>
| Attribute | Type | Default | Description |
|---|---|---|---|
data-format | string | random | random, pronounceable or passphrase |
data-length | integer | 16 | Password length (4–128) |
data-words | integer | 4 | Passphrases: number of words (3–10) |
data-separator | string | - | Passphrases: separator between words |
data-auto-generate | boolean | true | Generate a password as soon as the page loads |
| Attribute | Type | Default | Description |
|---|---|---|---|
data-lowercase | boolean | true | Lowercase letters (a-z) |
data-uppercase | boolean | true | Uppercase letters (A-Z) |
data-digits | boolean | true | Numbers (0-9) |
data-special | boolean | false | Special characters (!@#$...) |
data-exclude-similar | boolean | false | Exclude similar characters (il1Lo0O) |
| Attribute | Type | Default | Description |
|---|---|---|---|
data-target | string | — | CSS selector of the field to fill automatically |
data-lang | string | fr | Widget language (fr, en, es, de, it, pt, nl, ru, ja, zh) |
data-class | string | — | Additional CSS classes (themes, variants) |
data-api | string | script origin | Override the API URL — set it on the <script> tag |
Pick a theme to preview it and copy its stylesheet.
.passly-widget-wrapper.blue-theme { --passly-primary: #2563EB; --passly-primary-hover: #1D4ED8; --passly-primary-light: #3B82F6; --passly-bg: #111827; --passly-bg-card: #1F2937; --passly-text: #F3F4F6; --passly-text-light: #9CA3AF; --passly-border: #374151; background: linear-gradient(135deg, var(--passly-bg), var(--passly-bg-card)) !important; border: 1px solid var(--passly-primary) !important; } .passly-widget-wrapper.blue-theme .passly-generate-btn { background: linear-gradient(135deg, var(--passly-primary), var(--passly-primary-hover)) !important; }
Fully restyle the widget through its CSS variables and public class names:
The “Powered by Passly” credit cannot be hidden: it is restored automatically. You are free to style it however you like, though.
Build your own theme in real time:
.passly-widget-wrapper.custom-theme { --passly-primary: #DC2626; --passly-primary-hover: #c81212; --passly-primary-light: #f03a3a; --passly-bg: #1A1A1A; --passly-text: #E8E8E8; --passly-border: #2A2A2A; --passly-radius: 10px; --passly-font-size: 15px; }
// Le widget s'initialise seul ; il suffit d'écouter ses événements.
document.addEventListener('DOMContentLoaded', () => {
document.querySelectorAll('.passly-widget').forEach((widget) => {
widget.addEventListener('passly:generated', (event) => {
console.log('Mot de passe généré :', event.detail.password);
console.log('Entropie :', event.detail.entropyBits, 'bits');
});
});
});
// Création dynamique
function createWidget(container) {
const widget = document.createElement('div');
widget.className = 'passly-widget';
widget.dataset.length = '20';
widget.dataset.special = 'true';
container.appendChild(widget);
// Facultatif : l'observateur interne détecte déjà les nouveaux nœuds.
window.PasslyWidget?.init(container);
}