Virgil Security

Easy-to-use developer tools for securing user data in mobile & web apps, the Cloud, and IoT products

Works with your favorite tech

Our building blocks can be used alone or together:

End-to-end encrypt messages & personal data on user devices

If your data is only encrypted in transit and at rest, it’s still vulnerable to developer error and security issues at your service providers. With end-to-end encryption, only your end-users or IoT devices can decrypt their data – protecting them and you.

// aliceUID and bobUID - strings with identities of users that will receive the message
const usersToEncryptTo = [aliceUID, bobUID];

// Look up user public keys
const publicKeys = await eThree.lookupPublicKeys(usersToEncryptTo);

// Encrypt text using target user public keys
const encryptedText = await eThree.encrypt('this text will be encrypted', publicKeys);

Decrypt and verify that the data wasn’t tampered with

Can you tell if a message or sensor really came from a trusted user or from somebody else? A simple solution:

// Look up origin user public keys
const publicKey = await eThree.lookupPublicKeys(bobUID);

// Decrypt text and verify if it was really written by Bob
let decryptedText;
try {
  decryptedText = await eThree.decrypt(encryptedText, publicKey);
} catch (err) {
  if ( === 'IntegrityCheckFailedError') {
    console.error('Bob didn\'t send this message');
  throw err;

Use our secure, geo-balanced key management service to distribute keys between users

Allow your users to find each other’s public keys. Backup encrypted user private keys. Unlock lost user keys. Natively integrated with the SDK.

// Create key pair and register public key with Virgil
await eThree.register();

// Back up private key with password
await eThree.backupPrivateKey(keyPassword);

// Look up public key of other users
const publicKeys = await eThree.lookupPublicKeys(usersToEncryptTo);

End-to-end encryption
for messaging

Learn more

End-to-end encryption
for IoT devices

Learn more

Get started now with our easy-to-follow guides.
Start free, pay 2¢ per user per month beyond 250 user keys.

Empowering these awesome companies

Boston, MA

America's first telemedicine app for Hormone Balance, with E2EE chat for clients & doctors.

Ontario, CANADA

E2EE messaging for private disposable phone numbers.


E2EE private in-app messaging & user engagement platform.

Sikka Chat
San Jose, CA

E2EE chat service for patients & doctors at private practices.


The invite-only E2EE social chat app in and near the U.S. White House.


Australia’s most trusted solution for mobile healthcare communication, E2EE.