Secure user management for your app in 5 minutes

Clerk is the fastest way to add secure user authentication and management to your application.

The Sign up and Sign in you expect

Icon For Add-user

Sign up

  • Email confirmation
  • OAuth integrations
  • Invitations
Icon For Shield-user

Sign in

  • Forgot password
  • Two factor
  • Rate limiting

Deployed your way

Our themable templates are the fastest way to get up and running. They're deployed on your subdomain to provide a transparent experience to your user.

Icon For Lock
accounts.example.com/sign_up

Our AJAX endpoints allow complete customization. The endpoints are deployed on your subdomain so Clerk can set session cookies your application can read.

var request = new XMLHttpRequest();
request.open('POST', 'https://accounts.example.com/sign_up.json', true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
request.onload = function() {
  if (request.status == 200) {
    // Success!  The account is created and awaiting email verification.
    var account = JSON.parse(request.responseText);
  } else {
    // There was an error creating the account.
  }
};
request.send("first_name=Ben&last_name=Bo&email_address=ben.bo@example.com&password=hidden");

Integrated seamlessly

Our SDK provides a full-featured Account model compatible with your preferred ORM, including helpers to communicate with accounts and retrieve the signed in account for a request.

# /app/controllers/widget_controller.rb
class WidgetController < ApplicationController
  # This will trigger a redirect to the login page if no account is signed in.
  before_action :authenticate_account!

  def index
    # This returns the currently signed in account as an instance of
    # Clerk::Account, or nil if there is no account. In this case, it is
    # guaranteed to return an account because of the before_action.
    current_account
  end
end

How it works

Accounts are critical to your application, so we believe it's critical you understand how Clerk works. More Questions? Please reach out.

Plain-old session cookies

Our cookies contain an identifying token and are signed to prevent forgery. To write cookies on a path your application can read, we host a service on your subdomain through a CNAME record in your DNS.

Icon For Info-circle
To mirror cookie-writing in development, we provide developers with a domain on lcl.dev and forward their localhost there.

To mirror the cookie-writing process in development, we provide each developer with a HTTPS-enabled development domain on lcl.dev and forward their localhost there.

Dedicated databases

Clerk provisions a secure, dedicated database just for your customer data. You're given read access so you can query directly and build models with your ORM (or use our SDKs).

Icon For Info-circle
In development, database access works the same but the database is shared.

In development, everything works the same except the database is shared.

Fast authentication

Session cookies are sent to our fast authentication service on each request to identify and authorize the associated account.

Experience Clerk

©2019 Clerk. Currently in private beta.