Keyring
An authentication framework that handles authorization/communication with most popular web services.
Consider an alternative
Keyring shows warning signs in 2026 — compare the alternatives below before installing. It runs on 1K+ sites, is rated 4.3/5 and was last updated 3 years ago, and scores 36/100 on our health check.
- No update in 3 years
- Only tested up to WordPress 6.2 (latest is 7.1)
How does it stack up?
Side-by-side on installs, updates, ratings & supportDaily downloads
Download spikes usually follow a new release — each site that auto-updates counts as a download.
Rankings
Where Keyring stands todayWordPress.org search rankings
Live position in the plugin search, top 100| Keyword | Position |
|---|---|
| authentication | >100 |
| authorization | >100 |
| http basic | >100 |
| oauth | >100 |
| security | >100 |
Version adoption
Share of active sites per release.
Rating breakdown
★★★★★★★★★★ 4.3 from 6 reviews
About Keyring
From the official readme · v3.0Description
See the Keyring Developer’s Guide for more details.
Keyring provides a very hookable, completely customizable framework for connecting your WordPress to an external service. It takes care of all the heavy lifting when making authenticated requests, so all you need to do is implement cool features and not worry about these tricky bits.
Out of the box, Keyring currently comes with base Service definitions for:
- HTTP Basic,
- OAuth1, and
- OAuth2.
And includes ready-to-use definitions for:
- 500px
- Delicious
- Eventbrite
- Fitbit
- Flickr
- Foursquare
- Google Analytics
- Google Contacts
- Google Mail
- Instapaper
- Jetpack/WordPress.com
- Moves
- Nest
- RunKeeper
- Strava
- TripIt
- Tumblr
- Yahoo! Updates
- YouTube
You can very easily write your own Service definitions and then use all the power of Keyring to hook into that authentication flow. See the Keyring Developer’s Guide for more details.
Contributions are welcome via Github pull request.
Installation
- Install Keyring either via the WordPress.org plugin directory, or by uploading the files to your server
- Activate Keyring in Plugins > Installed Plugins
- Go to Tools > Keyring > Add New and you will be prompted to configure services before making user-specific connections to them
Frequently asked questions
How Do I Use Keyring in my Plugin?
Check out the Keyring Developer’s Guide. See Keyring Social Importers for an example. You can also extend Keyring Service classes directly, rather than attaching the service as a property to an object (like the Importers do).
Will Keyring work on my WordPress?
Keyring requires PHP 5.3+ to work, because it makes use of some modern features in PHP like late static binding and abstract classes. Other than that, as long as you meet the minimum required WP version, you should be OK to get started. If you get a cryptic “T_PAAMAYIM_NEKUDOTAYIM” error, you need to upgrade to PHP 5.3+. If you get an error about “Parse error: syntax error, unexpected T_FUNCTION in …/wp-content/plugins/keyring/keyring.php on line 50” you also need to upgrade PHP. Your webserver will also need to be able to make outbound HTTPS requests for some operations with some services to…
How do I configure Services?
Most services within Keyring require some sort of API key/secret before you can connect to them. Go to Tools > Keyring > Add New. Click the name of a service in the bottom section, or ‘Manage’ next to one of the services in the top section. Enter your API details (you will need to get those from the specific service, most config screens provide links/details on how to set them up). Click ‘Save Changes’. Now you should be able to create a new connection to that service from the “Add New” screen.
How do I connect to ‘x’ service?
Go to Tools > Keyring > Add New. Click the name of the service in the top section (if it’s in the bottom section, then that service has not been configured for API access yet, see above). Follow through any authentication prompts to connect. You should now be connected, and your connection details should be listed on the Keyring admin page (which you will be redirected to once authentication is complete).
Now what?
Keyring just provides a framework for handling connections to external services. You need to download another plugin which makes use of Keyring to do anything useful (e.g. an importer or content-syncing plugin).
How does Keyring store tokens?
By default, on a single-site install, Keyring stores tokens in your wp_posts table with a custom post type of ‘keyring_token’ Coming soon, Keyring will store tokens for a multi-site install in a specified blog/site’s wp_posts (so you can set a single site aside for just token storage if you like) Keyring provides a framework for you to write your own token storage engine (see store.php and includes/stores/).
How do I add to the list of services Keyring can connect to?
Add files to includes/services/extended/ that either implement one of the includes/services/core/ service foundations, or start from scratch. Follow one of the existing service definitions for a template, and see service.php in the root of Keyring for some detail on methods you need to define, and optional ones that might make your life easier.
Changelog
3.0
- CHANGE: Default branch has been renamed to
trunkto match WordPress projects. Update your refs. - Enhancement: BREAKING: Removed delicious service (they have shut down completely). Props @sanmai.
- Enhancement: BREAKING: LinkedIn now uses OAuth2. Props @glendaviesnz.
- Enhancement:
fetch_profile_picturemethod added to Twitter service. Props @glendaviesnz. - Enhancement: Added a GitHub Service definition, props @alperakgun.
- Enhancement: Added a Google Drive Service definition, props @scruffian.
- Enhancement: Trim spaces off API keys etc to avoid mistakes when copy/pasting. Props @kbrown9.
- Enhancement: Allow all 2xx response codes to be considered “Success” for all requests, for all protocols. Props @bgrgicak for the proposal.
- Enhancement: Add translator comments. Props @scruffian.
- Enhancement: Define the
selfendpoint for Tumblr, and add helper methods to retrieve user info. Props @glendaviesnz. - Enhancement: Add a
keyring_{service}_request_scopefilter for OAuth2 services, matching the existing filter for OAuth1 services. Props @glendaviesnz. - Enhancement: Add a
'full_response'param toKeyring_Service_OAuth2::request(), which will cause the method to return the full HTTP response object. Props @glendaviesnz. - Enhancement: Some services (looking at you, Strava) seem to double-encode redirect URIs, resulting in “corrupted” parameter names. Added a method to clean that up.
- Bugfix: Make the Google services always request a refresh token for offline access. Props @kbrown9 and @atrniv for input.
- Bugfix: Update Strava to use refresh tokens and offline access, per their new API requirements. Props @mdrovdahl for pointing it out.
- Bugfix: Update use of add_submenu_page() to comply with WP 5.3. Props @jhwwp (wp.org) for the fix.
- Bugfix: Apply the keyring_access_token filter consistently in Google Services. Props @pablinos.
- Bugfix: Use static “Cancel” URIs in UIs. Props @pgl.
- Bugfix: Remove some WordPress.com-specific code from Eventbrite.
- Bugfix: Ensure that
PUTrequests have aContent-Lengthheader set. Props @glendaviesnz. - Bugfix: Compatibility with more recent versions of PHP7, and PHP8.
- Bugfix: Apply keyring_access_token filter properly in Instapaper.
- Bugfix: Remove redunant
is_servicecheck (enforced via method call signature). Props @sanmai. - Bugfix: Remove hover event on action links in Service listing UI.
2.0
- Bugfix BREAKING: Remove invalid reference to $this in error handler. Changes number of params passed to keyring_error action.
- Bugfix BREAKING:
expiresvalues in tokens MUST be UNIX timestamps now. - Enhancement BREAKING: All Google services now share a base service (0-google-base.php)
- Enhancement: Added a Pocket Service, props @roccotripaldi
- Enhancement: Added a Google Mail (Gmail) Service, props @poisa
- Enhancement: Added a YouTube Service definition, based heavily on @superbia’s Google Analytics one.
- Enhancement: Add a composer.json config file (Keyring is now on Packagist at https://packagist.org/packages/beaulebens/keyring)
- Bugfix: Handle empty usernames in the Strava Service.
- Bugfix: Updated links in readme for Google Analytics and Contacts to their user-facing URLs.
1.9
- Enhancement: Added a Google Analytics Service definition, props @superbia.
- Enhancement: Added a Strava Service definition, props @mdrovdahl.
- Enhancement: Add a “Settings” link to the plugin listing if you’re using the bundled Admin UI.
- Bugfix: Remove deprecated calls to
screen_icon(). - Bugfix: Fitbit tokens now refresh automatically.
- Bugfix: Tumblr now requires HTTPS, so update all request URLs. Props @westi.
1.8
- Enhancement: New Jetpack/WordPress.com service definition.
- Bugfix: LinkedIn scope require modification because connections were failing.
- Enhancement: Extensive linting/code cleanup, including removing some redundant code.
1.7.1
- Bugfix: Only allow users with
manage_optionsto access management UIs. Props Laura Lee for disclosure.
1.7
- Enhancement: Added Pinterest Service definition.
- Enhancement: Added Nest Service definition.
- Enhancement: New filter for modifying credentials before saving (
keyring_{service}_basic_ui_save_credentials). - Enhancement: Update all services so that token-meta filters use a dynamic service name, making it much easier to extend existing services. Props @jjj.
- Bugfix: Use
sentenceparameter when searching for existing tokens, to avoid WordPress doing weird word-splitting. Props @dashaluna. - Bugfix: Correct URL for Instagram to load profile details (required for a working connection). Props @dashaluna.
- Bugfix: Correct the URL for creating a Twitter app. Props @jjj.
- Bugfix: Handle avatar URLs better within the admin UI. Props @jjj.
- Bugfix: Correct URL for registering Eventbrite apps.
For developers
Is this your plugin? Show off the numbers.
Add a live badge to your site, docs or GitHub README. It updates on its own — no account needed.
Best Keyring alternatives
All authentication plugins →FAQ
Keyring: quick answers
Straight answers, pulled from live WordPress.org data.
Live data from WordPress.org · checked Sep 27, 2026
Is Keyring free?
Yes. Keyring is free to download and use from the official WordPress.org plugin directory.
Is Keyring safe to use in 2026?
Keyring shows warning signs in 2026 — compare the alternatives below before installing. It runs on 1K+ sites, is rated 4.3/5 and was last updated 3 years ago, and scores 36/100 on our health check.
How many websites use Keyring?
Keyring is active on 1K+ WordPress websites and has been downloaded 96,193 times since it launched in March 2012. It was downloaded 221 times in the last 30 days.
Does Keyring work with WordPress 7.1?
Keyring is officially tested up to WordPress 6.2.13, while the latest release is 7.1.2. It may still work, but try it on a staging site first.
When was Keyring last updated?
The latest version, 3.0, was released on April 25, 2023 (3 years ago).
Who makes Keyring?
Keyring is developed and maintained by Beau Lebens.
What are the best alternatives to Keyring?
The most popular alternatives to Keyring are Limit Login Attempts (300K+ installs), WPS Limit Login (100K+ installs) and Two Factor (100K+ installs).
Powered by PageForge
Want thousands of pages that rank like these? Build them in an afternoon.
This directory runs on the same engine as PageForge. Turn any spreadsheet, CSV or API into thousands of fast, SEO-ready WordPress pages — with schema, internal links and AI-written copy baked in.
- CSV, Google Sheets & API data sources
- AI content, schema & internal links per page
- Works with Elementor, Gutenberg, Yoast & Rank Math
- Free on WordPress.org — no credit card