1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Lifetime Password Manager from $49 | BlindLock</title> 7 <meta name="description" content="BlindLock Lifetime for a local, hardware-bound password vault: 1,000 licences in phases at $49, $89 and $109. Pay once â no recurring subscription."> 8 <meta name="robots" content="index,follow,max-image-preview:large"> 9 <meta name="theme-color" content="#09090b"> 10 <link rel="canonical" href="https://blindlock.app/en/pricing"> 11 <link rel="alternate" hreflang="en" href="https://blindlock.app/en/pricing"> 12 <link rel="alternate" hreflang="de" href="https://blindlock.app/de/preise"> 13 <link rel="alternate" hreflang="x-default" href="https://blindlock.app/en/pricing"> 14 <meta property="og:site_name" content="BlindLock"> 15 <meta property="og:locale" content="en_US"> 16 <meta property="og:title" content="BlindLock Lifetime â from $49"> 17 <meta property="og:description" content="Pay once for a no-expiry BlindLock licence with no recurring subscription. One active device per licence."> 18 <meta property="og:type" content="website"> 19 <meta property="og:url" content="https://blindlock.app/en/pricing"> 20 <meta property="og:image" content="https://blindlock.app/assets/og-card.png?v=9fb9d40a295b"> 21 <meta property="og:image:width" content="2400"> 22 <meta property="og:image:height" content="1260"> 23 <meta property="og:image:alt" content="BlindLock â the invisible vault"> 24 <meta name="twitter:card" content="summary_large_image"> 25 <meta name="twitter:title" content="BlindLock Lifetime â from $49"> 26 <meta name="twitter:description" content="Pay once for a no-expiry BlindLock licence with no recurring subscription. One active device per licence."> 27 <meta name="twitter:image" content="https://blindlock.app/assets/og-card.png?v=9fb9d40a295b"> 28
28<script type="application/ld+json"> 29 { 30 "@context": "https://schema.org", 31 "@graph": [ 32 { 33 "@type": "Organization", 34 "@id": "https://blindlock.app/#organization", 35 "name": "BlindLock", 36 "url": "https://blindlock.app/", 37 "logo": { 38 "@type": "ImageObject", 39 "url": "https://blindlock.app/assets/logo-192.png" 40 }, 41 "legalName": "BlindLock, LLC", 42 "description": "BlindLock stores passwords, notes and 2FA secrets encrypted inside a PNG carrier file. Separate encrypted containers protect larger files. Vault contents stay local, with no central customer-vault database.", 43 "email": "[email protected]", 44 "founder": { "@id": "https://blindlock.app/#david-domingo" }, 45 "address": { "@type": "PostalAddress", "streetAddress": "131 Continental Dr, Suite 305", "addressLocality": "Newark", "addressRegion": "DE", "postalCode": "19713", "addressCountry": "US" }, 46 "contactPoint": { "@type": "ContactPoint", "email": "[email protected]", "contactType": "customer support", "availableLanguage": ["en"] } 47 }, 48 { 49 "@type": "Person", 50 "@id": "https://blindlock.app/#david-domingo", 51 "name": "David Domingo", 52 "jobTitle": "Founder and CEO", 53 "worksFor": { 54 "@id": "https://blindlock.app/#organization" 55 } 56 }, 57 { 58 "@type": "WebSite", 59 "@id": "https://blindlock.app/#website", 60 "url": "https://blindlock.app/", 61 "name": "BlindLock", 62 "inLanguage": [ 63 "de", 64 "en" 65 ], 66 "publisher": { 67 "@id": "https://blindlock.app/#organization" 68 } 69 }, 70 { 71 "@type": "WebPage", 72 "@id": "https://blindlock.app/en/pricing#webpage", 73 "url": "https://blindlock.app/en/pricing", 74 "name": "Lifetime Password Manager from $49 | BlindLock", 75 "description": "BlindLock Lifetime: 1,000 licences in phases at $49, $89 and $109. Pay once for a no-expiry licence with no recurring subscription.", 76 "inLanguage": "en", 77 "isPartOf": { 78 "@id": "https://blindlock.app/#website" 79 }, 80 "publisher": { 81 "@id": "https://blindlock.app/#organization" 82 } 83 }, 84 { 85 "@type": "SoftwareApplication", 86 "@id": "https://blindlock.app/en/#software", 87 "name": "BlindLock", 88 "applicationCategory": "SecurityApplication", 89 "operatingSystem": "Windows, macOS, Linux", 90 "url": "https://blindlock.app/en/", 91 "image": "https://blindlock.app/assets/logo-192.png", 92 "description": "BlindLock stores password, note and 2FA entries inside an encrypted PNG carrier. Separate encrypted file-vault containers protect larger files. Vault contents are never transmitted to BlindLock servers.", 93 "offers": { 94 "@type": "AggregateOffer", 95 "priceCurrency": "USD", 96 "lowPrice": "49", 97 "highPrice": "109", 98 "offerCount": "1000", 99 "availability": "https://schema.org/InStock", 100 "url": "https://blindlock.app/en/pricing" 101 } 102 }, 103 { 104 "@type": "Product", 105 "@id": "https://blindlock.app/en/#product", 106 "name": "BlindLock Lifetime Licence", 107 "brand": { "@type": "Brand", "name": "BlindLock" }, 108 "image": "https://blindlock.app/assets/logo-192.png", 109 "description": "A one-time BlindLock desktop licence with no expiry date or recurring subscription. One licence covers one active Windows, macOS or Linux device and includes all features and released updates. iOS, iPadOS and Android are always free.", 110 "category": "Password manager", 111 "offers": [ 112 { 113 "@type": "Offer", 114 "name": "BlindLock Lifetime Licence â Phase 1", 115 "price": "49", 116 "priceCurrency": "USD", 117 "availability": "https://schema.org/InStock", 118 "url": "https://blindlock.app/en/pricing", 119 "seller": { 120 "@id": "https://blindlock.app/#organization" 121 }, 122 "shippingDetails": { 123 "@type": "OfferShippingDetails", 124 "shippingRate": { "@type": "MonetaryAmount", "value": "0", "currency": "USD" },
125 "shippingDestination": { "@type": "DefinedRegion", "addressCountry": ["AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", "PL", "PT", "RO", "SK", "SI", "ES", "SE"] }, 126 "deliveryTime": { "@type": "ShippingDeliveryTime", 127 "handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 0, "unitCode": "DAY" }, 128 "transitTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 0, "unitCode": "DAY" } } 129 }, 130 "hasMerchantReturnPolicy": { 131 "@id": "https://blindlock.app/en/pricing#merchant-return-policy" 132 }, 133 "itemCondition": "https://schema.org/NewCondition", 134 "description": "Phase 1: one-time payment, one active desktop device per licence, limited to 100 licences. iOS and Android always free." 135 }, 136 { 137 "@type": "Offer", 138 "name": "BlindLock Lifetime Licence â Phase 2", 139 "price": "89", 140 "priceCurrency": "USD", 141 "availability": "https://schema.org/InStock", 142 "url": "https://blindlock.app/en/pricing", 143 "seller": { 144 "@id": "https://blindlock.app/#organization" 145 }, 146 "shippingDetails": { 147 "@type": "OfferShippingDetails", 148 "shippingRate": { "@type": "MonetaryAmount", "value": "0", "currency": "USD" }, 149 "shippingDestination": { "@type": "DefinedRegion", "addressCountry": ["AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", "PL", "PT", "RO", "SK", "SI", "ES", "SE"] }, 150 "deliveryTime": { "@type": "ShippingDeliveryTime", 151 "handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 0, "unitCode": "DAY" }, 152 "transitTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 0, "unitCode": "DAY" } } 153 }, 154 "hasMerchantReturnPolicy": { 155 "@id": "https://blindlock.app/en/pricing#merchant-return-policy" 156 }, 157 "itemCondition": "https://schema.org/NewCondition", 158 "description": "Phase 2: one-time payment, one active desktop device per licence, limited to 350 licences. iOS and Android always free." 159 }, 160 { 161 "@type": "Offer", 162 "name": "BlindLock Lifetime Licence â Phase 3", 163 "price": "109", 164 "priceCurrency": "USD", 165 "availability": "https://schema.org/InStock", 166 "url": "https://blindlock.app/en/pricing", 167 "seller": { 168 "@id": "https://blindlock.app/#organization" 169 }, 170 "shippingDetails": { 171 "@type": "OfferShippingDetails", 172 "shippingRate": { "@type": "MonetaryAmount", "value": "0", "currency": "USD" }, 173 "shippingDestination": { "@type": "DefinedRegion", "addressCountry": ["AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", "PL", "PT", "RO", "SK", "SI", "ES", "SE"] }, 174 "deliveryTime": { "@type": "ShippingDeliveryTime", 175 "handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 0, "unitCode": "DAY" }, 176 "transitTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 0, "unitCode": "DAY" } } 177 }, 178 "hasMerchantReturnPolicy": { 179 "@id": "https://blindlock.app/en/pricing#merchant-return-policy" 180 }, 181 "itemCondition": "https://schema.org/NewCondition", 182 "description": "Phase 3: one-time payment, one active desktop device per licence, limited to 550 licences. iOS and Android always free." 183 } 184 ] 185 }, 186 { 187 "@type": "MerchantReturnPolicy", 188 "@id": "https://blindlock.app/en/pricing#merchant-return-policy", 189 "name": "Statutory right of withdrawal for digital BlindLock licences", 190 "url": "https://blindlock.app/en/refund", 191 "applicableCountry": [ 192 "AT", 193 "BE", 194 "BG", 195 "HR", 196 "CY", 197 "CZ", 198 "DK", 199 "EE", 200 "FI", 201 "FR", 202 "DE", 203 "GR", 204 "HU", 205 "IE", 206 "IT", 207 "LV", 208 "LT", 209 "LU", 210 "MT", 211 "NL", 212 "PL", 213 "PT", 214 "RO", 215 "SK", 216 "SI", 217 "ES", 218 "SE" 219 ], 220 "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow", 221 "merchantReturnDays": 14, 222 "returnFees": "https://schema.org/FreeReturn", 223 "refundType": "https://schema.org/FullRefund" 224 }, 225 { 226 "@type": "FAQPage", 227 "@id": "https://blindlock.app/en/pricing#faq", 228 "mainEntity": [ 229 { 230 "@type": "Question", 231 "name": "Can I try BlindLock before buying?",
232 "acceptedAnswer": { 233 "@type": "Answer", 234 "text": "Yes. Seven days with the full feature set â no email address and no payment details. After that the trial simply expires. There is no subscription and nothing to cancel. Go to download â" 235 } 236 }, 237 { 238 "@type": "Question", 239 "name": "Is this really a one-time payment?", 240 "acceptedAnswer": { 241 "@type": "Answer", 242 "text": "Yes. Lifetime licences have no auto-renewal and no surprise charge next year. A lifetime licence is a lifetime licence." 243 } 244 }, 245 { 246 "@type": "Question", 247 "name": "What happens after the Lifetime Phases sell out?", 248 "acceptedAnswer": { 249 "@type": "Answer", 250 "text": "Then desktop lifetime is gone for good. Desktop BlindLock becomes subscription-only â $4.99/month or $39.99/year, always with the latest version for as long as the subscription runs. Lifetime pricing will not return. iOS, iPadOS and Android remain free." 251 } 252 }, 253 { 254 "@type": "Question", 255 "name": "How many devices does one licence cover?", 256 "acceptedAnswer": { 257 "@type": "Answer", 258 "text": "One paid licence = one active desktop at a time (Windows, macOS or Linux). Replace your PC whenever you like â the licence moves with you. It does not die with the old machine. iOS, iPadOS and Android are always free, for everyone, and do not consume that desktop seat." 259 } 260 }, 261 { 262 "@type": "Question", 263 "name": "Are iOS and Android free?", 264 "acceptedAnswer": { 265 "@type": "Answer", 266 "text": "Yes. iOS, iPadOS and Android are always free, for everyone. Lifetime and later subscription pricing apply to desktop platforms only." 267 } 268 }, 269 { 270 "@type": "Question", 271 "name": "Do I get future updates?", 272 "acceptedAnswer": { 273 "@type": "Answer", 274 "text": "Yes. All released updates and major versions are included with a paid desktop licence. BlindLock is available for Windows, macOS and Linux â iOS, iPadOS and Android follow, always free. Routine updates remain optional, while a security-critical release may establish a minimum supported version." 275 } 276 }, 277 { 278 "@type": "Question", 279 "name": "What's the refund policy?", 280 "acceptedAnswer": { 281 "@type": "Answer", 282 "text": "At checkout you confirm immediate digital delivery and waive the right of withdrawal. After that confirmation there is no withdrawal. Read the full policy â" 283 } 284 }, 285 { 286 "@type": "Question", 287 "name": "Is there a team or family plan?", 288 "acceptedAnswer": { 289 "@type": "Answer", 290 "text": "BlindLock's threat model is built around one person and one device. Team capabilities are being evaluated for a future release." 291 } 292 }, 293 { 294 "@type": "Question", 295 "name": "Which payment methods do you accept?", 296 "acceptedAnswer": { 297 "@type": "Answer", 298 "text": "Credit card, PayPal, Apple Pay, Google Pay and further local methods depending on your country â processed by BlindLock's Merchant of Record. All prices are final. Nothing is added at checkout." 299 } 300 }, 301 { 302 "@type": "Question", 303 "name": "Can I upgrade later?", 304 "acceptedAnswer": { 305 "@type": "Answer", 306 "text": "There is nothing to upgrade to. Every licence includes every feature." 307 } 308 } 309 ] 310 }, 311 { 312 "@type": "BreadcrumbList", 313 "@id": "https://blindlock.app/en/pricing#breadcrumb", 314 "itemListElement": [ 315 { 316 "@type": "ListItem", 317 "position": 1, 318 "name": "Home", 319 "item": "https://blindlock.app/en/" 320 }, 321 { 322 "@type": "ListItem", 323 "position": 2, 324 "name": "Pricing", 325 "item": "https://blindlock.app/en/pricing" 326 } 327 ] 328 } 329 ] 330 } 331 </script>
331 332 <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32.png?v=cee687cdeb73"> 333 <link rel="icon" type="image/png" sizes="192x192" href="/assets/favicon-192.png?v=ba8775e06498"> 334 <link rel="apple-touch-icon" href="/assets/apple-touch-icon.png?v=d4e203e09633"> 335 336 337 <link rel="preload" as="font" type="font/woff2" href="/assets/fonts/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2" crossorigin> 338 <link rel="preload" as="font" type="font/woff2" href="/assets/fonts/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko20yygg_vb.woff2" crossorigin> 339 <link rel="stylesheet" href="/assets/fonts/fonts.css?v=562fb6a6393a"> 340 <style> 341 *,*::before,*::after{margin:0;padding:0;box-sizing:border-box} 342 :root{--bg:#09090b;--surface:rgba(16,16,20,0.78);--border:rgba(255,255,255,0.06);--border-strong:rgba(255,255,255,0.12);--text:#f4f4f5;--text-secondary:#c4c4cc;--text-tertiary:#8a8a96;--emerald:#10b981;--emerald-light:#6ee7b7;--emerald-dim:rgba(16,185,129,0.12)} 343 html{scroll-behavior:smooth} 344 body{font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--bg);color:var(--text);min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased} 345 #particles{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.7} 346 .bg-effects{position:fixed;inset:0;pointer-events:none;z-index:0} 347 .orb-primary{display:none !important;position:absolute;top:-16%;left:50%;transform:translateX(-50%);width:980px;height:700px;background:radial-gradient(ellipse,rgba(16,185,129,.08),rgba(16,185,129,.03) 42%,transparent 70%);filter:blur(60px);animation:orb-drift 22s ease-in-out infinite} 348 .orb-secondary{display:none !important;position:absolute;bottom:-25%;right:-8%;width:620px;height:620px;background:radial-gradient(circle,rgba(16,185,129,.05),transparent 62%);filter:blur(60px);animation:orb-drift 26s ease-in-out infinite reverse} 349 @keyframes orb-drift{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(24px)}} 350 .dot-grid{position:absolute;inset:0;opacity:.025;background-image:radial-gradient(circle at 1px 1px,var(--text-tertiary) 1px,transparent 0);background-size:32px 32px} 351 .top-line{position:fixed;top:0;left:0;right:0;height:1px;z-index:100;pointer-events:none;background:linear-gradient(90deg,transparent,rgba(16,185,129,.12) 18%,var(--emerald) 50%,rgba(16,185,129,.12) 82%,transparent);opacity:.55} 352 .page{position:relative;z-index:1;width:min(100%,1200px);margin:0 auto;padding:2rem 1.5rem 4rem} 353 .nav{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:3rem;flex-wrap:wrap} 354 .brand{display:inline-flex;align-items:center;gap:.8rem;color:var(--text);text-decoration:none} 355 .brand img{width:40px;height:40px} 356 .brand-name{font-size:1.15rem;font-weight:800;letter-spacing:-.05em} 357 .brand-name span:last-child{background:linear-gradient(135deg,#10b981,#6ee7b7);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text} 358 .nav-links{display:flex;gap:.2rem;flex-wrap:wrap} 359 .nav-links a{color:var(--text-secondary);text-decoration:none;font-size:.88rem;font-weight:500;padding:.55rem .8rem;border-radius:999px;transition:color .2s,background .2s} 360 .nav-links a:hover{color:var(--text);background:rgba(255,255,255,.04)} 361 .nav-links a.active{color:var(--emerald-light);background:var(--emerald-dim)} 362 .lang-switch{display:inline-flex;border:1px solid var(--border-strong);border-radius:999px;background:rgba(255,255,255,.03);overflow:hidden} 363 .lang-switch a{display:inline-flex;align-items:center;justify-content:center;min-width:60px;min-height:38px;padding:0 .9rem;text-decoration:none;color:var(--text-secondary);font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase} 364 .lang-switch a.active{color:#04110d;background:linear-gradient(135deg,#10b981,#34d399)} 365 .eyebrow{display:inline-flex;align-items:center;gap:.55rem;padding:.5rem .95rem;border-radius:999px;background:var(--emerald-dim);color:var(--emerald-light);font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin-bottom:1.25rem} 366 .eyebrow-dot{width:.52rem;height:.52rem;border-radius:50%;background:var(--emerald);box-shadow:0 0 12px rgba(16,185,129,.55);animation:pulse 2.4s ease-in-out infinite} 367 @keyframes pulse{0%,100%{opacity:1}50%{opacity:.25}} 368 .page-hero{margin-bottom:3rem;max-width:820px} 369 .page-hero h1{font-size:clamp(2.5rem,6vw,4.2rem);line-height:1;letter-spacing:-.06em;margin-bottom:1.2rem} 370 .page-hero p{color:var(--text-secondary);font-size:1.1rem;line-height:1.85;font-weight:300} 371 .panel{background:var(--surface);border:1px solid var(--border);border-radius:28px;-webkit-box-shadow:0 24px 80px rgba(0,0,0,.35);box-shadow:0 24px 80px rgba(0,0,0,.35);padding:2rem;margin-bottom:2rem} 372 .pricing-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem} 373 .tier{padding:1.8rem 1.6rem;border-radius:22px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.05);display:flex;flex-direction:column} 374 .tier.featured{border-color:rgba(16,185,129,.35);background:rgba(16,185,129,.05);box-shadow:0 0 0 1px rgba(16,185,129,.12),0 18px 60px rgba(16,185,129,.1)} 375 .tier .phase-label{display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--emerald-light);margin-bottom:.7rem} 376 .tier h3{font-size:1.4rem;letter-spacing:-.04em;margin-bottom:.5rem} 377 .tier .price{font-size:2.6rem;letter-spacing:-.06em;font-weight:800;line-height:1;margin:.6rem 0} 378 .tier .price .cur{font-size:1.3rem;color:var(--text-tertiary);margin-right:.2rem;font-weight:600} 379 .tier .subprice{font-size:.88rem;color:var(--text-tertiary);margin-bottom:1rem} 380 .tier ul{list-style:none;display:grid;gap:.6rem;margin:1rem 0 1.4rem} 381 .tier li{position:relative;padding-left:1.4rem;color:var(--text-secondary);font-size:.92rem;line-height:1.65} 382 .tier li::before{content:'â';position:absolute;
382left:0;top:0;color:var(--emerald-light);font-weight:700} 383 .tier .supply{font-size:.82rem;color:var(--text-tertiary);margin-bottom:1rem} 384 .tier .button{width:100%;margin-top:auto}.checkout-trust{margin:1.35rem auto 0;max-width:860px;text-align:center;color:var(--text-tertiary);font-size:.86rem;line-height:1.8}.checkout-req{margin:1.35rem auto 0;max-width:860px;padding:.9rem 1.1rem;border:1px solid rgba(167,243,208,.28);border-radius:.7rem;background:rgba(16,185,129,.06);text-align:center;color:var(--text-secondary);font-size:.92rem;line-height:1.75}.checkout-req strong{color:var(--text-primary)}.checkout-req a{color:var(--emerald-light);text-decoration:underline;text-underline-offset:.18em} 385 .button{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:.95rem 1.4rem;border-radius:999px;text-decoration:none;font-weight:600;transition:transform .22s ease} 386 .button:hover{transform:translateY(-1px)} 387 .button-primary{background:linear-gradient(135deg,#10b981,#34d399);color:#04110d} 388 .button-secondary{border:1px solid var(--border-strong);background:rgba(255,255,255,.03);color:var(--text)} 389 .button-ghost{color:var(--text-secondary);background:transparent;border:1px solid var(--border-strong)} 390 .section-title{margin-bottom:1.6rem} 391 .section-title h2{font-size:clamp(1.6rem,3vw,2.1rem);letter-spacing:-.05em;margin-bottom:.5rem} 392 .section-title p{color:var(--text-tertiary);font-size:.98rem;line-height:1.75;max-width:680px} 393 .features-included{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem} 394 .included{padding:1rem 1.1rem;border-radius:16px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.05);display:flex;align-items:center;gap:.6rem} 395 .included::before{content:'â';color:var(--emerald-light);font-weight:700} 396 .included span{color:var(--text-secondary);font-size:.92rem} 397 .faq-lite{display:grid;grid-template-columns:1fr 1fr;gap:1rem} 398 .faq-item{padding:1.2rem;border-radius:20px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.05)} 399 .faq-item h4{font-size:1rem;letter-spacing:-.02em;margin-bottom:.5rem} 400 .faq-item p{color:var(--text-secondary);line-height:1.75;font-size:.92rem} 401 .faq-item a{color:var(--emerald-light);text-decoration:none} 402 .faq-item a:hover{text-decoration:underline} 403 .cta-row{display:inline-flex;gap:.85rem;flex-wrap:wrap;justify-content:center} 404 .cta-panel{padding:2.4rem 2rem;text-align:center} 405 .cta-panel h2{font-size:clamp(1.6rem,3vw,2.2rem);letter-spacing:-.05em;margin-bottom:.8rem} 406 .cta-panel p{color:var(--text-secondary);max-width:560px;margin:0 auto 1.5rem;line-height:1.8} 407 footer.site{margin-top:3rem;border-top:1px solid var(--border);padding-top:2rem} 408 .footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:2rem;margin-bottom:2rem} 409 .footer-col h4{font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:.9rem} 410 .footer-col a{display:block;color:var(--text-secondary);text-decoration:none;font-size:.9rem;padding:.35rem 0;transition:color .2s} 411 .footer-col a:hover{color:var(--emerald-light)} 412 .footer-about p{color:var(--text-tertiary);font-size:.88rem;line-height:1.75;margin-top:.7rem;max-width:300px} 413 .footer-meta{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding-top:1.2rem;border-top:1px solid var(--border);color:var(--text-tertiary);font-size:.78rem} 414 @media (max-width: 960px){.pricing-grid,.features-included,.faq-lite,.footer-grid{grid-template-columns:1fr 1fr}} 415 @media (max-width: 640px){.nav{margin-bottom:2rem}.pricing-grid,.features-included,.faq-lite,.footer-grid{grid-template-columns:1fr}.button{width:100%}} 416 .hero-card,.panel,.pricing-card,.cta-end{position:relative;isolation:isolate;backdrop-filter:blur(14px) saturate(1.05);-webkit-backdrop-filter:blur(14px) saturate(1.05);transform:translateZ(0)}</style> 417<style>/* bl-wordmark-jakarta */ 418.brand img{width:60px!important;height:60px!important} 419.brand-name,.wordmark-blind,.wordmark-lock{font-family:'Plus Jakarta Sans','Inter',-apple-system,sans-serif!important;font-weight:800!important;letter-spacing:-.04em!important} 420.brand-name span:last-child,.wordmark-lock{background:linear-gradient(135deg,#10b981 0%,#6ee7b7 50%,#10b981 100%)!important;-webkit-background-clip:text!important;background-clip:text!important;-webkit-text-fill-color:transparent!important;filter:drop-shadow(0 0 .35em rgba(16,185,129,.5))} 421footer.site .brand img{width:72px!important;height:72px!important}
422/* footer wordmark colors: canonical in /assets/bl-site.20260727u.css */ 423.brand{transition:filter .2s ease} 424.brand:hover .brand-name{background:linear-gradient(135deg,#10b981 0%,#6ee7b7 50%,#10b981 100%)!important;-webkit-background-clip:text!important;background-clip:text!important;-webkit-text-fill-color:transparent!important;filter:drop-shadow(0 0 .35em rgba(16,185,129,.5))!important} 425.brand:hover .brand-name span:last-child{background:none!important;-webkit-text-fill-color:#fff!important;color:#fff!important;filter:none!important} 426</style> 427<style>a:focus-visible,button:focus-visible,.button:focus-visible,.btn:focus-visible,summary:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid #6ee7b7;outline-offset:3px;border-radius:10px}</style><style>.skip-link{position:absolute;left:-9999px;top:0;z-index:300;background:#10b981;color:#04110d;padding:.6rem 1rem;border-radius:0 0 10px 0;font-weight:800;text-decoration:none}.skip-link:focus{left:0}</style><style>@media(max-width:640px){.nav-links{order:3;flex-basis:100%;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;margin-top:.5rem;gap:.15rem;-webkit-overflow-scrolling:touch}.nav-links::-webkit-scrollbar{display:none}.nav-links a{white-space:nowrap;flex:0 0 auto}}</style><style>.crumbs{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;font-size:.8rem;line-height:1.4;color:var(--text-tertiary,#9b9ba8);margin:.2rem 0 1.3rem}.crumbs a{color:inherit;text-decoration:none}.crumbs a:hover{color:var(--emerald-light,#6ee7b7)}.crumbs .sep{opacity:.6}.crumbs [aria-current]{color:var(--text-secondary,#c4c4cc)}</style><style> 428.bl-live-strip{display:flex;align-items:center;gap:.7rem;justify-content:center;flex-wrap:wrap;margin:0 auto 1.7rem;padding:.65rem 1.15rem;border-radius:999px;background:rgba(16,185,129,.08);border:1px solid rgba(16,185,129,.22);width:max-content;max-width:100%} 429.bl-live-dot{width:.62rem;height:.62rem;border-radius:50%;background:var(--emerald,#10b981);box-shadow:0 0 10px rgba(16,185,129,.85);animation:bl-live-pulse 1.8s ease-in-out infinite;flex:0 0 auto} 430.bl-live-label{font-size:.7rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--emerald-light,#6ee7b7)} 431.bl-live-text{font-size:.93rem;font-weight:500;color:var(--text-secondary,#c4c4cc)} 432.bl-live-strip.is-urgent{background:linear-gradient(135deg,#10b981,#34d399);border-color:transparent;box-shadow:0 10px 34px -8px rgba(16,185,129,.7)} 433.bl-live-strip.is-urgent .bl-live-dot{background:#04110d;box-shadow:none} 434.bl-live-strip.is-urgent .bl-live-label,.bl-live-strip.is-urgent .bl-live-text{color:#04130d;font-weight:800} 435@keyframes bl-live-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.78)}} 436.tier .phase-status{font-size:.84rem;font-weight:600;color:var(--emerald-light,#6ee7b7);margin-bottom:1rem;min-height:1.15em} 437.tier.is-locked{opacity:.5;filter:saturate(.55)} 438.tier.is-soldout{opacity:.45;filter:saturate(.4)} 439.tier.is-locked .phase-status,.tier.is-soldout .phase-status{color:var(--text-tertiary,#9b9ba8)} 440.bl-buy.is-disabled{background:rgba(255,255,255,.05)!important;color:var(--text-tertiary,#9b9ba8)!important;cursor:not-allowed;pointer-events:none;box-shadow:none!important;border:1px solid var(--border,rgba(255,255,255,.08))!important;transform:none!important} 441.bl-buy.is-disabled::before{display:none!important} 442@media(prefers-reduced-motion:reduce){.bl-live-dot{animation:none}} 443</style><style>/* bl-lifetime-cta effects */ 444 445 446 447.cta-lifetime{position:relative;overflow:hidden;isolation:isolate;padding-top:.66rem;padding-bottom:.66rem} 448 449@media (prefers-reduced-motion:reduce){.btn-fx{display:none!important}} 450.btn-fx{position:absolute;inset:0;z-index:0;display:block;width:100%;height:100%;opacity:0;pointer-events:none;mix-blend-mode:screen;border-radius:inherit} 451.btn-label{position:relative;z-index:2}</style><style>/* bl-cta-vault: calm base, hover = lift + brighten + emerald edge (+ sweep via btn-fx) */ 452.cta-lifetime{transition:transform .25s ease,filter .3s ease,box-shadow .35s ease} 453.cta-lifetime:hover{filter:brightness(1.07);box-shadow:inset 0 0 0 1.5px rgba(167,243,208,.9)} 454.bl-lock{position:relative;z-index:2;display:inline-flex;align-items:center;vertical-align:middle;margin-right:.6rem} 455.bl-lock svg{width:24px;height:26px;
455display:block} 456.bl-lock .sh-closed,.bl-lock .sh-open{transition:opacity .28s ease} 457.bl-lock .sh-open{opacity:0} 458.bl-buy:hover .bl-lock .sh-open{opacity:1} 459.bl-buy:hover .bl-lock .sh-closed{opacity:0} 460.bl-lock .dot{animation:bl-lock-blink 2.6s ease-in-out infinite} 461@keyframes bl-lock-blink{0%,100%{opacity:1}50%{opacity:.3}} 462.bl-buy.is-disabled .bl-lock{display:none} 463@media (prefers-reduced-motion:reduce){.bl-lock .dot{animation:none}.cta-lifetime{transition:none}} 464</style><link rel="stylesheet" href="/assets/bl-site.20260727u.css?v=ddbffdbb3792">
465<script src="/assets/bl-site.js?v=667541f7f596" defer></script>
465 466</head> 467<body><a class="skip-link" href="#bl-main">Skip to content</a> 468 <canvas id="particles"></canvas> 469 <div class="bg-effects"><div class="orb-primary"></div><div class="orb-secondary"></div><div class="dot-grid"></div></div> 470 <div class="top-line"></div> 471 472 <div class="page"> 473 <nav class="nav"> 474 <a class="brand" href="/en/"><img src="/assets/logo-192.png?v=8f1622948138" alt="BlindLock logo"><div class="brand-name"><span class="wordmark-blind">Blind</span><span class="wordmark-lock">Lock</span></div></a> 475 <div class="nav-links"> 476 <a href="features.html">Features</a> 477 <a href="security.html">Security</a> 478 <a href="how-it-works.html">How it works</a> 479 <a href="/en/demo.html">Demo</a> 480 <a href="/en/download.html">Download</a> 481 <a class="active" href="/en/pricing.html">Pricing</a> 482 <a href="compare.html">Compare</a> 483 484 485 486 <a href="blog/">Blog</a> 487 <a href="faq.html">FAQ</a> 488 </div> 489 <div class="lang-switch" data-bl-lang-switch="canonical-v1" aria-label="Language"><a href="/de/preise.html" data-lang-switch="de" lang="de">DE</a><a class="active" aria-current="page" href="/en/pricing.html" data-lang-switch="en" lang="en">EN</a></div> 490 </nav><main id="bl-main" tabindex="-1"><nav class="crumbs" aria-label="Breadcrumb"><a href="/en/">Home</a> <span class="sep" aria-hidden="true">âº</span> <span aria-current="page">Pricing</span></nav> 491 492 <section class="page-hero"> 493 <div class="eyebrow"><span class="eyebrow-dot"></span>Pricing</div> 494 <h1>Pay once.<br>No expiry.<br>No subscription.</h1> 495 <p>BlindLock is a local, hardware-bound password vault with lifetime desktop licences â exactly 1,000 in three phases. Each gives you a non-expiring right to use BlindLock on one active Windows, macOS or Linux device, including all released updates and major versions, with no recurring invoice. iOS, iPadOS and Android are always free. Licence entitlement is verified online when you unlock a licensed desktop vault. Security-critical releases may require a minimum version. Routine updates remain optional. After the first 1,000 licences, desktop BlindLock becomes subscription-only (<span>$4.99/month</span> or <span>$39.99/year</span>) â mobile stays free.</p> 496 </section> 497 498 <section class="panel" id="checkout"> 499 <div class="bl-live-strip" id="bl-live-strip" hidden role="status" aria-live="polite"><span class="bl-live-dot" aria-hidden="true"></span><span class="bl-live-label">LIVE</span><span class="bl-live-text"></span></div> 500 <div class="pricing-grid"> 501 <article class="tier" data-phase="1"> 502 <span class="phase-label">Lifetime · Phase 1</span> 503 <h3>Lifetime â Phase 1</h3> 504 <div class="price"><span class="cur">$</span><span class="amt">49</span></div> 505 <div class="subprice">One-time payment · no expiry</div> 506 <div class="supply">Limited to 100 licences</div> 507 <div class="phase-status"></div> 508 <ul> 509 <li>All features on your licensed desktop device</li> 510 <li>Windows, macOS & Linux â one active desktop at a time</li> 511 <li>Move the licence to a new PC anytime â it does not die with the old machine</li> 512 <li>iOS, iPadOS & Android always free, for everyone</li> 513 <li>All released updates & major versions included</li> 514 <li>Priority email support for licence holders</li> 515 </ul> 516 <a class="button button-primary cta-lifetime bl-buy" href="https://buy.polar.sh/polar_cl_wWUgrpr8W9HuZQqg3DDYWDEO4iiDO6sSfXeAJ1oFRA4" data-checkout-phase="phase1"><span class="bl-lock" aria-hidden="true"><svg viewBox="0 0 22 24" xmlns="http://www.w3.org/2000/svg"><path class="sh-closed" d="M7 12 V9 a4 4 0 0 1 8 0 v3" fill="none" stroke="#04110d" stroke-width="2.4" stroke-linecap="round"/>
516<path class="sh-open" d="M7 10.5 L5.28 8.04 A4 4 0 0 1 11.83 3.45 L13.55 5.91" fill="none" stroke="#04110d" stroke-width="2.4" stroke-linecap="round"/><rect x="5" y="12" width="12" height="9" rx="2.4" fill="#04110d"/><circle class="dot" cx="11" cy="16.5" r="1.5" fill="#34d399"/></svg></span><span class="bl-btn-text">Buy a Lifetime licence · $49</span></a> 517 </article> 518 519 <article class="tier featured" data-phase="2"> 520 <span class="phase-label">Lifetime · Phase 2</span> 521 <h3>Lifetime â Phase 2</h3> 522 <div class="price"><span class="cur">$</span><span class="amt">89</span></div> 523 <div class="subprice">One-time payment · no expiry</div> 524 <div class="supply">Limited to 350 licences · follows Phase 1</div> 525 <div class="phase-status"></div> 526 <ul> 527 <li>All features on your licensed desktop device</li> 528 <li>Windows, macOS & Linux â one active desktop at a time</li> 529 <li>Move the licence to a new PC anytime â it does not die with the old machine</li> 530 <li>iOS, iPadOS & Android always free, for everyone</li> 531 <li>All released updates & major versions included</li> 532 <li>Priority email support for licence holders</li> 533 </ul> 534 <a class="button button-primary bl-buy cta-lifetime" href="/en/pricing.html" data-checkout-phase="phase2"><span class="bl-lock" aria-hidden="true"><svg viewBox="0 0 22 24" xmlns="http://www.w3.org/2000/svg"><path class="sh-closed" d="M7 12 V9 a4 4 0 0 1 8 0 v3" fill="none" stroke="#04110d" stroke-width="2.4" stroke-linecap="round"/><path class="sh-open" d="M7 10.5 L5.28 8.04 A4 4 0 0 1 11.83 3.45 L13.55 5.91" fill="none" stroke="#04110d" stroke-width="2.4" stroke-linecap="round"/><rect x="5" y="12" width="12" height="9" rx="2.4" fill="#04110d"/><circle class="dot" cx="11" cy="16.5" r="1.5" fill="#34d399"/></svg></span><span class="bl-btn-text">Opens after Phase 1</span></a> 535 </article> 536 537 <article class="tier" data-phase="3"> 538 <span class="phase-label">Lifetime · Phase 3</span> 539 <h3>Lifetime â Phase 3</h3> 540 <div class="price"><span class="cur">$</span><span class="amt">109</span></div> 541 <div class="subprice">One-time payment · no expiry</div> 542 <div class="supply">Limited to 550 licences · the last lifetime licences ever</div> 543 <div class="phase-status"></div> 544 <ul> 545 <li>All features on your licensed desktop device</li> 546 <li>Windows, macOS & Linux â one active desktop at a time</li> 547 <li>Move the licence to a new PC anytime â it does not die with the old machine</li> 548 <li>iOS, iPadOS & Android always free, for everyone</li> 549 <li>All released updates & major versions included</li> 550 <li>Priority email support for licence holders</li> 551 </ul> 552 <a class="button button-primary bl-buy cta-lifetime" href="/en/pricing.html" data-checkout-phase="phase3"><span class="bl-lock" aria-hidden="true"><svg viewBox="0 0 22 24" xmlns="http://www.w3.org/2000/svg"><path class="sh-closed" d="M7 12 V9 a4 4 0 0 1 8 0 v3" fill="none" stroke="#04110d" stroke-width="2.4" stroke-linecap="round"/><path class="sh-open" d="M7 10.5 L5.28 8.04 A4 4 0 0 1 11.83 3.45 L13.55 5.91" fill="none" stroke="#04110d" stroke-width="2.4" stroke-linecap="round"/><rect x="5" y="12" width="12" height="9" rx="2.4" fill="#04110d"/><circle class="dot" cx="11" cy="16.5" r="1.5" fill="#34d399"/></svg></span><span class="bl-btn-text">Opens after Phase 2</span></a> 553 </article> 554 </div> 555 <p class="checkout-req"><strong>Requirement: a security chip in the machine.</strong> Windows and Linux need TPM 2.0 â a Mac needs the Secure Enclave (Apple Silicon, or Intel with a T2 chip). BlindLock binds the vault to that chip â without one the licence cannot be activated. On many PCs the chip is only switched off in the BIOS/UEFI, where it is called TPM, fTPM, PTT or âsecurity processorâ. <a href="/en/platforms.html">Full system requirements</a></p> 556 <p class="checkout-trust">Final prices â taxes already included · Merchant of Record at checkout · Checkout waiver applies at checkout · No central vault sync · No vault telemetry · One licence = one active desktop (Windows, macOS or Linux), transferable anytime · iOS, iPadOS & Android always free, for everyone</p> 557 </section> 558 559 <section class="panel"> 560 <div class="section-title"> 561 <h2>What's included in every licence</h2> 562 <p>There is no "Pro" tier. Every desktop feature ships with every paid licence. Each licence activates one desktop at a time and can be transferred to a new PC whenever you need. Keep your data safe with a backup. iOS, iPadOS and Android stay free, for everyone.</p> 563 </div> 564 <div class="features-included"> 565 <div class="included"><span>Password manager</span></div> 566 <div class="included"><span>TOTP 2FA authenticator</span></div> 567 <div class="included"><span>Encrypted file vault</span></div> 568 <div class="included"><span>Secure Markdown notes</span></div> 569 <div class="included"><span>Hardware key support (YubiKey, Google Titan, SoloKey)</span></div> 570 <div class="included"><span>Encrypted backup with twelve words</span></div> 571 <div class="included"><span>TPM / Secure Enclave / StrongBox binding</span></div> 572 <div class="included"><span>NIST PQ components for scoped stack uses (resting vault stays classical AEAD)</span></div> 573 <div class="included"><span>Steganographic vault storage</span></div> 574 <div class="included"><span>All released feature updates</span></div> 575 <div class="included"><span>Windows, macOS & Linux (one active desktop · moves with you)</span></div> 576 <div class="included"><span>iOS, iPadOS & Android always free, for everyone</span></div> 577 </div> 578 </section> 579 580 <section class="panel"> 581 <div class="section-title"> 582 <h2>Pricing questions</h2> 583 <p>The things people ask before they click "buy". Everything else lives on the <a href="faq.html" style="color:var(--emerald-light);text-decoration:none">FAQ page</a>.</p> 584 </div> 585 <div class="faq-lite"> 586 <article class="faq-item"> 587 <h4>Can I try BlindLock before buying?</h4> 588 <p>Yes. Seven days with the full feature set â no email address and no payment details. After that the trial simply expires. There is no subscription and nothing to cancel. <a href="download.html">Go to download â</a></p> 589 </article> 590 <article class="faq-item"> 591 <h4>Is this really a one-time payment?</h4> 592 <p>Yes. A Lifetime licence has no expiry date, auto-renewal or recurring subscription. Entitlement is still verified online when you unlock the vault.</p> 593 </article> 594 <article class="faq-item"> 595 <h4>What happens after the Lifetime Phases sell out?</h4> 596 <p>Then desktop lifetime is gone for good. Desktop BlindLock becomes subscription-only â <span>$4.99/month</span> or <span>$39.99/year</span>, always with the latest version for as long as the subscription runs. Lifetime pricing will not return. iOS, iPadOS and Android remain free.</p> 597 </article> 598 <article class="faq-item"> 599 <h4>How many devices does one licence cover?</h4> 600 <p>One paid licence = one active desktop at a time (Windows, macOS or Linux). Replace your PC whenever you like â the licence moves with you through the built-in migration flow. It does not die with the old machine. iOS, iPadOS and Android are always free, for everyone, and do not consume that desktop seat.</p> 601 </article> 602 <article class="faq-item"> 603 <h4>Are iOS and Android free?</h4> 604 <p>Yes. iOS, iPadOS and Android are always free, for everyone. Lifetime and later subscription pricing apply to desktop platforms only.</p> 605 </article> 606 <article class="faq-item"> 607 <h4>Do I get future updates?</h4> 608 <p>Yes. All released updates and major versions are included with a paid desktop licence. BlindLock is available for Windows, macOS and Linux â iOS, iPadOS and Android follow, always free. Routine updates remain optional, while a security-critical release may establish a minimum supported version.</p> 609 </article> 610 <article class="faq-item"> 611 <h4 id="merchant-return-policy">What's the refund policy?</h4> 612 <p>At checkout you confirm immediate digital delivery and waive the right of withdrawal. After that c
612onfirmation there is no withdrawal. <a href="refund.html">Read the full policy â</a></p> 613 </article> 614 <article class="faq-item"> 615 <h4>Is there a team or family plan?</h4> 616 <p>BlindLock's threat model is built around one person and one device. Team capabilities are being evaluated for a future release.</p> 617 </article> 618 <article class="faq-item"> 619 <h4>Which payment methods do you accept?</h4> 620 <p>Credit card, PayPal, Apple Pay, Google Pay and further local methods depending on your country â processed by BlindLock's Merchant of Record. All prices are final. Nothing is added at checkout.</p> 621 </article> 622 <article class="faq-item"> 623 <h4>Can I upgrade later?</h4> 624 <p>There is nothing to upgrade to. Every licence includes every feature.</p> 625 </article> 626 </div> 627 </section> 628 629 <section class="panel"> 630 <div class="section-title"> 631 <div class="eyebrow"><span class="eyebrow-dot"></span>Before you buy</div> 632 <h2>Understand the vault model.</h2> 633 <p>Lifetime is for a cloudless, hardware-bound password vault â read the guides, then compare honestly.</p> 634 </div> 635 <div class="bl-resource-links" aria-label="Guides before purchase"> 636 <a href="cloudless-password-vault.html">Cloudless vault</a> 637 <a href="private-password-manager.html">Privacy</a> 638 <a href="hardware-bound-password-vault.html">Hardware binding</a> 639 <a href="steganographic-password-vault.html">Steganography</a> 640 <a href="compare.html">Compare</a> 641 <a href="security.html">Security</a> 642 </div> 643 </section> 644 645 <section class="panel cta-panel"> 646 <h2>Lifetime pricing rises with every phase.</h2> 647 <p>Each phase costs more: <span>$49</span> â <span>$89</span> â <span>$109</span>. With licence no. 1,000, desktop lifetime ends for good â after that, desktop BlindLock is subscription-only. iOS and Android stay free.</p> 648 <div class="cta-row"> 649 <a class="button button-primary cta-lifetime bl-buy" href="https://buy.polar.sh/polar_cl_wWUgrpr8W9HuZQqg3DDYWDEO4iiDO6sSfXeAJ1oFRA4" data-checkout-phase="phase1"><span class="bl-lock" aria-hidden="true"><svg viewBox="0 0 22 24" xmlns="http://www.w3.org/2000/svg"><path class="sh-closed" d="M7 12 V9 a4 4 0 0 1 8 0 v3" fill="none" stroke="#04110d" stroke-width="2.4" stroke-linecap="round"/><path class="sh-open" d="M7 10.5 L5.28 8.04 A4 4 0 0 1 11.83 3.45 L13.55 5.91" fill="none" stroke="#04110d" stroke-width="2.4" stroke-linecap="round"/><rect x="5" y="12" width="12" height="9" rx="2.4" fill="#04110d"/><circle class="dot" cx="11" cy="16.5" r="1.5" fill="#34d399"/></svg></span><span class="bl-btn-text">Buy a Lifetime licence · $49</span></a> 650 <a class="button button-secondary" href="compare.html">Compare to alternatives</a> 651 </div> 652 653 </section> 654 655 </main> 656 <footer class="site" data-bl-footer="canonical-v1"><div class="footer-grid"><div class="footer-col footer-about"><a class="brand" href="/en/"><img src="/assets/logo-192.png?v=8f1622948138" alt="BlindLock logo" width="32" height="32"><div class="brand-name"><span class="wordmark-blind">Blind</span><span class="wordmark-lock">Lock</span></div></a><p>The invisible vault. Local, concealed, hardware-bound.</p></div><div class="footer-col"><h4>Product</h4><a href="/en/features.html">Features</a><a href="/en/security.html">Security</a><a href="/en/how-it-works.html">How it works</a><a href="/en/demo.html">Demo</a><a href="/en/download.html">Download</a><a href="/en/platforms.html">Platforms</a><a href="/en/pricing.html">Pricing</a><a href="/en/compare.html">Compare</a><a href="/en/updates.html">Updates</a></div><div class="footer-col"><h4>Guides</h4><a href="/en/cloudless-password-vault.html">Vault without cloud</a><a href="/en/private-password-manager.html">Privacy</a><a href="/en/hardware-bound-password-vault.html">Hardware binding</a><a href="/en/steganographic-password-vault.html">Steganography</a></div><div class="footer-col"><h4>Company</h4><a href="/en/about.html">About</a><a href="/en/blog/">Blog</a><a href="/en/faq.html">FAQ</a><a href="/en/contact.html">Contact</a><a href="/en/legal-notice.html">Legal notice</a><a href="/en/privacy.html">Privacy</a><a href="/en/terms.html">Terms</a><a href="/en/refund.html">Refunds</a></div></div><div class="footer-meta"><span>BlindLock⢠· 2026</span></div></footer> 657 </div> 658 659
659<script> 660 (()=>{const canvas=document.getElementById('particles');const ctx=canvas.getContext('2d');let w,h,particles;const COUNT=110,MAX_DIST=180,SPEED=0.8;function resize(){w=canvas.width=window.innerWidth;h=canvas.height=window.innerHeight;}function init(){resize();particles=Array.from({length:COUNT},()=>({x:Math.random()*w,y:Math.random()*h,vx:(Math.random()-0.5)*SPEED,vy:(Math.random()-0.5)*SPEED,r:Math.random()*1.5+0.5}));}function draw(){ctx.clearRect(0,0,w,h);for(const p of particles){p.x+=p.vx;p.y+=p.vy;if(p.x<0)p.x=w;if(p.x>w)p.x=0;if(p.y<0)p.y=h;if(p.y>h)p.y=0;}for(let i=0;i<particles.length;i++)for(let j=i+1;j<particles.length;j++){const dx=particles[i].x-particles[j].x,dy=particles[i].y-particles[j].y,dist=Math.sqrt(dx*dx+dy*dy);if(dist<MAX_DIST){ctx.strokeStyle=`rgba(16,185,129,${(1-dist/MAX_DIST)*0.15})`;ctx.lineWidth=0.5;ctx.beginPath();ctx.moveTo(particles[i].x,particles[i].y);ctx.lineTo(particles[j].x,particles[j].y);ctx.stroke();}}for(const p of particles){ctx.fillStyle='rgba(16,185,129,0.35)';ctx.beginPath();ctx.arc(p.x,p.y,p.r,0,Math.PI*2);ctx.fill();}if(!document.hidden)requestAnimationFrame(draw);}window.addEventListener('visibilitychange',()=>{if(!document.hidden&&particles)draw();});window.addEventListener('resize',resize);const lowPower=window.matchMedia&&(matchMedia("(prefers-reduced-motion:reduce)").matches||matchMedia("(max-width:760px)").matches||matchMedia("(pointer:coarse)").matches);if(!lowPower){init();draw();}})(); 661 </script>
661 662 663
663<script src="../assets/bl-lifetime-config.js?v=8ad73f63b6cd"></script>
663 664
664<script src="../assets/bl-lifetime.js?v=a409ea19ab39" defer></script>
vendor: 1 bytes, line 664
664
665<script> 666 (() => { 667 const CFG = window.BlindLockLifetimeCheckout || {}; 668 const LIVE = CFG.launchMode === 'live'; 669 // In live mode the buttons already carry their own text and checkout 670 // address: website-ops/tools/set-launch-mode.mjs stamps them into the 671 // file, so a reader without JavaScript sees the truth and only the open 672 // phase can be clicked. assets/bl-lifetime.js then refines them from the 673 // live counter. 674 // 675 // This block used to rewrite every button on every load, and it got two 676 // things wrong. It read CFG.checkoutUrls[phase] while the config is 677 // split by language, so the address it wrote was the pricing page 678 // itself. And it made all three phases look buyable until the counter 679 // script arrived â a visitor could pay for Phase 2 while Phase 1 was 680 // still open and cheaper. It now only handles preview. 681 if (LIVE) return; 682 document.querySelectorAll('.bl-buy').forEach((btn) => { 683 const txt = btn.querySelector('.bl-btn-text'); 684 (txt || btn).textContent = 'Coming soon'; 685 btn.setAttribute('href', '/en/pricing.html'); 686 btn.setAttribute('data-checkout-state', 'preview'); 687 btn.setAttribute('title', 'Purchases are not open yet â no payment is processed.'); 688 }); 689 })(); 690 </script>
690 691 <!-- bl-v2 lifetime-CTA hover sweep (ported verbatim from the DE pages) --> 692
692<script> 693(function(){ 694 "use strict"; 695 var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion:reduce)').matches; 696 var hasGL = !!window.WebGLRenderingContext; 697 var VERT='attribute vec2 p;void main(){gl_Position=vec4(p,0.0,1.0);}'; 698 function compile(gl,vsrc,fsrc){ 699 function sh(ty,src){ var s=gl.createShader(ty); gl.shaderSource(s,src); gl.compileShader(s); return gl.getShaderParameter(s,gl.COMPILE_STATUS)?s:null; } 700 var vs=sh(gl.VERTEX_SHADER,vsrc), fs=sh(gl.FRAGMENT_SHADER,fsrc); if(!vs||!fs) return null; 701 var pr=gl.createProgram(); gl.attachShader(pr,vs); gl.attachShader(pr,fs); gl.linkProgram(pr); 702 return gl.getProgramParameter(pr,gl.LINK_STATUS)?pr:null; 703 } 704 function fullTri(gl,pr){ var b=gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER,b); gl.bufferData(gl.ARRAY_BUFFER,new Float32Array([-1,-1,3,-1,-1,3]),gl.STATIC_DRAW); var l=gl.getAttribLocation(pr,'p'); gl.enableVertexAttribArray(l); gl.vertexAttribPointer(l,2,gl.FLOAT,false,0,0); } 705 function now(){ return performance.now()/1000; } 706 707 // Generic hover-driven WebGL effect mounted into each element of `nodes`. 708 function mountHoverFx(nodes, fragSrc, opts){ 709 if(reduce || !hasGL || !nodes.length) return; 710 opts=opts||{}; 711 Array.prototype.forEach.call(nodes, function(host){ 712 var fx=null,t0=now(),hover=0,target=0,running=false,dead=false; 713 function make(){ 714 if(opts.wrapLabel && !host.querySelector('.btn-label')){ var span=document.createElement('span'); span.className='btn-label'; while(host.firstChild){span.appendChild(host.firstChild);} host.appendChild(span); } 715 var c=document.createElement('canvas'); c.className=opts.cls||'plat-fx'; c.setAttribute('aria-hidden','true'); host.insertBefore(c,host.firstChild); 716 var gl=null; try{ gl=c.getContext('webgl',{antialias:true,alpha:true,premultipliedAlpha:false})||c.getContext('experimental-webgl'); }catch(e){gl=null;} 717 if(!gl) return null; var pr=compile(gl,VERT,fragSrc); if(!pr) return null; gl.useProgram(pr); fullTri(gl,pr); 718 gl.enable(gl.BLEND); gl.blendFunc(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA); 719 var uRes=gl.getUniformLocation(pr,'uRes'),uTime=gl.getUniformLocation(pr,'uTime'),uHover=gl.getUniformLocation(pr,'uHover'); 720 var DPR=Math.min(window.devicePixelRatio||1,2); c.style.opacity='1'; 721 function size(){ var r=host.getBoundingClientRect(); var w=Math.max(1,Math.round(r.width*DPR)),h=Math.max(1,Math.round(r.height*DPR)); if(c.width!==w)c.width=w; if(c.height!==h)c.height=h; gl.viewport(0,0,c.width,c.height); } 722 return {draw:function(time,hv){ size(); gl.clearColor(0,0,0,0); gl.clear(gl.COLOR_BUFFER_BIT); gl.uniform2f(uRes,c.width,c.height); gl.uniform1f(uTime,time); gl.uniform1f(uHover,hv); gl.drawArrays(gl.TRIANGLES,0,3); }}; 723 } 724 var ease=opts.ease||0.11; 725 function loop(){ hover+=(target-hover)*ease; var h=Math.max(0,Math.min(1,hover)); fx.draw(now()-t0,h); if(target===0&&hover<0.01){running=false;return;} requestAnimationFrame(loop); } 726 function enter(){ if(dead)return; if(!fx){ fx=make(); if(!fx){dead=true;return;} } target=1; if(!running){running=true;t0=now();requestAnimationFrame(loop);} } 727 function leave(){ target=0; } 728 host.addEventListener('pointerenter',enter); host.addEventListener('pointerleave',leave); 729 }); 730 } 731 732 // 1) Lifetime CTA + the premium "Artikel lesen" button: gliding light sweep on hover. 733 mountHoverFx(document.querySelectorAll('.cta-lifetime, .cta-sheen'), 734 ['precision mediump float;','uniform vec2 uRes;uniform float uTime;uniform float uHover;', 735 'const vec3 HL=vec3(0.78,1.0,0.90);','void main(){vec2 uv=gl_FragCoord.xy/uRes;float t=uTime;', 736 'float x=uv.x+uv.y*0.16;float sweep=pow(smoothstep(0.5,0.0,abs(fract(x-t*0.45)-0.5)),5.0);', 737 'float top=smoothstep(0.0,1.0,uv.y)*0.06;float a=(sweep*0.55+top)*uHover;gl_FragColor=vec4(HL,a);}'].join('\n'), 738 {cls:'btn-fx', wrapLabel:true, ease:0.10}); 739 })(); 740 </script>
740 741</body> 742</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.