Title: atshift Freeform Login
Author: @shift
Published: <strong>August 17, 2026</strong>
Last modified: September 7, 2026

---

Search plugins

![](https://ps.w.org/atshift-freeform-login/assets/banner-772x250.png?rev=3651844)

![](https://ps.w.org/atshift-freeform-login/assets/icon-256x256.png?rev=3651844)

# atshift Freeform Login

 By [@shift](https://profiles.wordpress.org/atshift/)

[Download](https://downloads.wordpress.org/plugin/atshift-freeform-login.2.3.2.zip)

 * [Details](https://test.wordpress.org/plugins/atshift-freeform-login/#description)
 * [Reviews](https://test.wordpress.org/plugins/atshift-freeform-login/#reviews)
 *  [Installation](https://test.wordpress.org/plugins/atshift-freeform-login/#installation)
 * [Development](https://test.wordpress.org/plugins/atshift-freeform-login/#developers)

 [Support](https://wordpress.org/support/plugin/atshift-freeform-login/)

## Description

atshift Freeform Login adds server-verified passkey registration and login to WordPress
while keeping the standard WordPress authentication flow and password fallback.

Passkeys let users sign in with a device’s biometric authentication, PIN, or security
key instead of typing a username and password. Because each credential is created
for this site, passkeys reduce the risks of phishing and password reuse.

Users can register, name, and remove up to five passkeys from the standard WordPress
profile screen. The current registration count is shown from 0/5 through 5/5. Synced
passkeys may also be available on other devices using the same storage account. 
After the first passkey is registered on the site, a passkey login button appears
on the WordPress login screen and in the `[atshift_login]` shortcode.

If WP-Members or another plugin already provides the username and password form,`[
atshift_passkey_login]` can add only the passkey button beside it. Username and 
password login remains available as a fallback, so users should keep a long, unique
password and store it in a password manager.

Passkey support is available on PHP 8.3 or newer when the PHP JSON and OpenSSL extensions
are enabled and the site uses HTTPS. Localhost is supported for development. The
rest of the plugin continues to run on its stated minimum PHP version when the passkey
module is unavailable.

Passkey ceremonies are verified on the WordPress server and do not require an external
authentication service. The bundled WebAuthn and supporting libraries are MIT licensed;
package names and exact versions are recorded in `composer.lock`.

When atshift User Profile Fields is active, its optional Passkeys field can place
the same management controls within the configured profile layout. Credentials and
authentication remain managed by atshift Freeform Login.

#### Login screen design and shortcodes

The plugin also customizes the standard WordPress login screen without replacing
WordPress authentication. The free version includes background colors and images,
a site-title brand display, form placement and width, core color controls, responsive
fallback, a live preview, the login shortcode, and Jetpack SSO compatibility.

When Jetpack SSO is active, its WordPress.com login UI is styled without replacing
Jetpack authentication. The shortcode uses Jetpack automatically and respects Jetpack
settings that hide or bypass the local login form. Use `[atshift_login jetpack="
hide"]` only when local username and password login remains available.

English is provided by the plugin source. Bundled translations are included for 
Japanese, Spanish, German, French, Brazilian Portuguese, Italian, Russian, Dutch,
Simplified Chinese, Polish, Turkish, Indonesian, Traditional Chinese (Taiwan), and
Korean.

### Links

 * Official website: [plugins.at-shift.net/en/freeform-login](https://plugins.at-shift.net/en/freeform-login/)

### Shortcodes

Use `[atshift_login]` for the complete username, password, and passkey login experience.

If WP-Members or another plugin already provides the username and password form,
place `[atshift_passkey_login]` beside it to output only the passkey button. It 
accepts `redirect`, `remember`, and `class`. `remember` defaults to `false`; use`
remember="true"` to request WordPress’s persistent login cookie.

The standalone button is omitted when the visitor is already logged in, passkeys
are unavailable, no passkey has been registered on the site, or Jetpack SSO disables
local login.

If another plugin provides a frontend profile page, place `[atshift_passkey_profile]`
on it to let the currently logged-in user add, review, and delete their own passkeys.
It accepts `heading` and `class`; use `heading="false"` when the surrounding page
already supplies the section heading. The shortcode never accepts a user ID, outputs
nothing for logged-out visitors, and marks the page as non-cacheable and `noindex,
nofollow`. The membership or profile plugin remains responsible for requiring a 
login for the whole page.

### Pro Add-on

The optional Pro add-on extends the free plugin with custom logo images, precise
position offsets, transparency, borders, corner radius, and detailed shadow controls.
The free plugin remains usable without an add-on.

 * Pro add-on: [Purchase Pro add-on](https://plugins.at-shift.net/en/freeform-login/#pricing)

### Related Projects

 * [atshift User Profile Fields](https://wordpress.org/plugins/atshift-user-profile-fields/)–
   create practical WordPress user profile fields and optionally place Freeform 
   Login passkey controls within its profile layouts.
 * [at-shift Fields](https://wordpress.org/plugins/atshift-fields-maintenance-for-custom-field-suite/)–
   arrange custom fields for posts and custom post types with a similar field-building
   experience.
 * [atshift Feed Builder](https://wordpress.org/plugins/atshift-feed-builder/) –
   create purpose-specific RSS 2.0 and JSON Feed 1.1 feeds from structured WordPress
   content.

## Screenshots

[⌊A customized WordPress login screen places passkey login above the standard username
and password fallback.⌉⌊A customized WordPress login screen places passkey login
above the standard username and password fallback.⌉[

A customized WordPress login screen places passkey login above the standard username
and password fallback.

[⌊Users can register a passkey from their WordPress profile, with guidance about
passkeys and password security.⌉⌊Users can register a passkey from their WordPress
profile, with guidance about passkeys and password security.⌉[

Users can register a passkey from their WordPress profile, with guidance about passkeys
and password security.

[⌊Registered passkeys show a recognizable name, registration date, last-used date,
and a delete action.⌉⌊Registered passkeys show a recognizable name, registration
date, last-used date, and a delete action.⌉[

Registered passkeys show a recognizable name, registration date, last-used date,
and a delete action.

[⌊The visual design editor provides grouped controls and responsive previews before
login-screen changes are enabled.⌉⌊The visual design editor provides grouped controls
and responsive previews before login-screen changes are enabled.⌉[

The visual design editor provides grouped controls and responsive previews before
login-screen changes are enabled.

## Installation

 1.  Upload the plugin folder to `/wp-content/plugins/`.
 2.  Activate the plugin.
 3.  Open Settings > atshift Freeform Login in the WordPress administration menu.
 4.  Configure and save the design.
 5.  Enable login-screen application after reviewing the preview.
 6.  On PHP 8.3 or newer, open Users > Profile to register a passkey.
 7.  To add the complete login form to a page, insert `[atshift_login]`.
 8.  If another plugin already provides the login form, insert `[atshift_passkey_login]`
     where only the passkey button should appear.
 9.  If another plugin provides a frontend profile page, insert `[atshift_passkey_profile]`
     where the current user should manage passkeys.

Shortcode examples:

 * Complete form with a redirect: `[atshift_login redirect="/my-account/"]`
 * Passkey button with a redirect: `[atshift_passkey_login redirect="/my-account/"]`
 * Passkey button with a persistent login cookie: `[atshift_passkey_login remember
   ="true"]`
 * Passkey management without a duplicate heading: `[atshift_passkey_profile heading
   ="false"]`

For every attribute and examples of passkey-only login and frontend-profile integration,
see the [Shortcode Guide](https://plugins.at-shift.net/en/freeform-login/shortcodes/).

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“atshift Freeform Login” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ @shift ](https://profiles.wordpress.org/atshift/)

[Translate “atshift Freeform Login” into your language.](https://translate.wordpress.org/projects/wp-plugins/atshift-freeform-login)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/atshift-freeform-login/),
check out the [SVN repository](https://plugins.svn.wordpress.org/atshift-freeform-login/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/atshift-freeform-login/)
by [RSS](https://plugins.trac.wordpress.org/log/atshift-freeform-login/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.3.2

 * Updated the official product, author, and Pro add-on links following the website
   migration.
 * Refined the Plugins screen purchase labels and removed its translation-project
   link.

#### 2.3.1

 * Limited each account to five registered passkeys and displayed the current count
   from 0/5 through 5/5.
 * Hardened passkey registration limits, profile management permissions, and multisite
   handling.

#### 2.3

 * Added the `[atshift_passkey_profile]` shortcode for placing current-user passkey
   registration and management controls on frontend profile pages.
 * Added self-only management, cache prevention, and search-index protection for
   frontend passkey profile integration.
 * Updated compatible bundled Symfony dependencies to their latest 7.4 patch releases.

#### 2.2

 * Added bundled translations for Spanish, German, French, Brazilian Portuguese,
   Italian, Russian, Dutch, Simplified Chinese, Polish, Turkish, Indonesian, Traditional
   Chinese (Taiwan), and Korean.
 * Standardized passkey, authentication, and WordPress interface terminology across
   the bundled translations.

#### 2.1.1

 * Reviewed standalone operation and integrations between atshift projects with 
   Codex Security Check, fixing potential defects and security issues and applying
   additional hardening.
 * Made other minor fixes.

#### 2.1.0

 * Added the `[atshift_passkey_login]` shortcode for placing a standalone passkey
   button beside an existing login form.
 * Added same-site redirect, persistent-login, and custom-class options for the 
   standalone passkey button.
 * Improved the position of the WordPress 7.1 Remember Me help bubble across login
   layouts.
 * Added official shortcode documentation and integration examples.

#### 2.0.1

 * Standardized the plugin action and metadata links shown on the Plugins screen.

#### 2.0

 * Added server-verified passkey registration and passwordless login on supported
   PHP 8.3 or newer HTTPS sites.
 * Added profile management for multiple named passkeys with registration and last-
   used dates.
 * Added passkey login to the WordPress login screen and `[atshift_login]` shortcode
   alongside the existing password fallback.

#### 0.9.3-beta.3

 * Confirmed compatibility with WordPress 7.1 RC3.
 * Replaced long placement menus with a visual position picker.
 * Added responsive placement controls that switch cleanly between one and two columns.
 * Improved live-preview language visibility and placement labels.

#### 0.9.3-beta.2

 * Reordered form and background placement options from left to right, with each
   column arranged from top to bottom.
 * Clarified placement labels in English and Japanese.

#### 0.9.3-beta.1

 * Added introductory text alignment and site-tagline defaults.
 * Added add-on-aware settings navigation and Pro upgrade links.
 * Improved form placement, background positioning labels, notices, and live-preview
   cache handling.

#### 0.9.2-beta.3

 * Added background type controls, introductory text, and a cropped wide-logo option.
 * Improved automatic interaction colors and login-screen compatibility styling.
 * Refined the live preview and grouped conditional settings for clearer editing.

#### 0.9.1-beta.1

 * Moved the design screen under Settings > atshift Freeform Login.
 * Added product illustration and plugin icon source assets for GitHub and future
   directory use.

#### 0.9.0-beta.1

 * Public beta with responsive login customization, shortcode output, and Jetpack
   SSO compatibility.

## Meta

 *  Version **2.3.2**
 *  Last updated **4 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/atshift-freeform-login/)
 * Tags
 * [custom login](https://test.wordpress.org/plugins/tags/custom-login/)[login](https://test.wordpress.org/plugins/tags/login/)
   [login form](https://test.wordpress.org/plugins/tags/login-form/)[passkey](https://test.wordpress.org/plugins/tags/passkey/)
   [webauthn](https://test.wordpress.org/plugins/tags/webauthn/)
 *  [Advanced View](https://test.wordpress.org/plugins/atshift-freeform-login/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/atshift-freeform-login/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/atshift-freeform-login/reviews/)

## Contributors

 *   [ @shift ](https://profiles.wordpress.org/atshift/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/atshift-freeform-login/)