A new WordPress site leaves a lot of small decisions to you: how strong passwords must be, when updates happen, what the outside world can see, what a copied test site is allowed to do. Keel Defaults makes those decisions sensibly from the start and puts all 46 defaults on one screen, in plain langu
PricingFree downloadThe WordPress.org download is free. Pro versions, add-ons or external services may cost extra.
CompatibilityRequires WordPress 6.4 and PHP 7.4.
SourceWordPress plugins · Nov 14, 2026
01 / Source details
Aboutthistool.
A new WordPress site leaves a lot of small decisions to you: how strong passwords must be, when updates happen, what the outside world can see, what a copied test site is allowed to do. Keel Defaults makes those decisions sensibly from the start and puts all 46 defaults on one screen, in plain language, where you can change any of them.
Try Keel live in WordPress Playground — a temporary WordPress site opens in your browser with the current release of Keel already switched on. No hosting, installation, or account required.
What Keel does for you
Tells you when WordPress itself needs attention. If WordPress.org flags your version of WordPress as insecure, Keel says so in Site Health. When a secure fix exists for your version, Keel names it and gives an administrator a button to install it. If no fix exists yet, it tells you that too.
Makes safer settings routine. Better password protection, less exposed to the outside world, and practical choices for updates and revisions, without a collection of small single-purpose plugins.
Stops test sites emailing real people. Staging and local copies of your site send no email by default, so a copied database cannot email your customers, members, or clients by surprise.
Makes update policy plain. The Updates screen says which WordPress release line the site follows, where that policy comes from, and links straight to the setting. Plugin and theme auto-updates get their own controls, which leave WordPress’s per-item choices alone unless you decide otherwise.
Explains normal WordPress.org update checks. Site Health Info summarizes the categories core normally sends, without collecting or displaying this site’s values or making extra requests.
Keeps email addresses out of public names. Site Health warns when an account’s public name or author address shows its email address, which WordPress does by default when the username is an email. An optional setting gives new and updated accounts safe public names, and a one-time cleanup fixes existing ones.
Shows you exactly what it is doing. One Site Health page lists every setting and its current state, points out likely overlaps with other plugins, checks that Keel’s own protections are still registered, and lists plugins that change who may run WordPress abilities.
Hands support a clean report. An administrator can download a sanitized JSON report of Keel’s settings and diagnostics, with no user data, site identifiers, option values or file paths in it.
Keeps a multisite network consistent. A Super Admin can set chosen defaults for every site from one Network Policy screen. Each site’s own choices are kept underneath and come back when the policy is lifted.
Who it is for
Keel is especially useful if you build or look after many sites, as a freelancer, an agency, or the owner of a multisite network. It is just as useful if you have one site that matters too much to leave its basic safeguards to memory.
Safe to try, easy to undo
Each setting has a control and an explanation under Settings → Site Defaults . Some settings depend on others or are managed by configuration or network policy. Keel does not edit or delete your existing posts, pages, media, or comments. The one change it makes to files by default is giving new uploads lowercase filenames. Turn a setting off and that behavior returns to WordPress; uninstall Keel and its settings are removed.
Good to know before you activate
Out of the box, Keel turns off comments, trackbacks, and pingbacks, hides public author archives, and stops other sites displaying yours inside a frame. Nothing is deleted, and each of these is a switch you can turn back. The FAQ below explains each one.
External services
Keel contacts two outside services. Neither is sent personal data.
Have I Been Pwned: checking passwords against known breaches
When the Require strong passwords default is enabled, Keel screens new passwords against the Have I Been Pwned Pwned Passwords range API ( https://api.pwnedpasswords.com ) and rejects passwords found in known breaches. It also re-checks existing passwords when people log in, and warns without blocking.
What is sent. Only the first five characters of the password’s SHA-1 hash, a method called k-anonymity. Never the password, never the full hash, and no personal data.
When. Only while the default is on: when a password is being set or changed, and at most once every 30 days per account when someone logs in with a username or email and password (filter: keel_password_rescreen_interval ). Every role is checked; to leave subscribers out, use add_filter( 'keel_password_rescreen_skip_roles', fn() => array( 'subscriber' ) ); . Application passwords, XML-RPC and REST logins are not re-checked.
What is stored about a login re-check. Two user meta timestamps: when the password was last checked, and when it was found in a breach. Both are deleted when the password changes and when the plugin is uninstalled.
How to turn it off. Turn off the strong-password default, add define( 'KEEL_DISABLE_HIBP', true ); to wp-config.php , or use the keel_disable_hibp filter.
Bounded checks and local storage. Lookups share an allowance per site, or per network on multisite: initially 10 requests, then one additional credit per minute, with at most two lookup slots in use at a time. Half of the allowance is kept for accounts that can write content or manage the site, so those accounts can still be checked when the rest is used up. A reply from the service answers the check that asked for it and is then discarded. No password, hash, hash prefix or reply is stored. The one stored record is a non-autoloaded database row holding the allowance’s counters and the diagnostic timestamps described below. Rows that earlier versions used to keep replies are deleted after the update.
If a check cannot run. An unreachable service, invalid response, exhausted allowance or busy lookup slot produces an unknown breach verdict. It does not block a password change; the other local password rules still apply. Site Health reports sampled unavailability and historical live-response evidence. Samples are rate-limited, not counts of every skipped check. Diagnostics contain only the reason and timestamps, never the password or hash prefix. Network managers can review shared evidence; individual site administrators see a generic coverage notice.
Have I Been Pwned is operated by Troy Hunt; see https://haveibeenpwned.com/Privacy and https://haveibeenpwned.com/API/v3 for its terms and privacy policy.
WordPress.org: checking whether your WordPress version is vulnerable
Keel asks WordPress.org whether the installed version of WordPress has known vulnerabilities, using the core stable-check API ( https://api.wordpress.org/core/stable-check/1.0/ ). This is WordPress.org’s own service, on the same host WordPress already contacts for updates and translations, although WordPress itself never queries it.
What is sent. No site data beyond the user-agent, which identifies the plugin and the site’s home URL in the same way WordPress’s own update requests identify the site.
How often. Keel keeps the answer for a day. It asks again sooner only when WordPress’s own update check offers a release that answer does not list yet, so a new security release is reported the day it ships.
If the service cannot be reached. If WordPress.org is unreachable or answers with something unusable, the failure is remembered for five minutes so an outage does not slow down every admin screen, and Site Health reports that the status could not be determined rather than implying the site is fine.
WordPress.org’s privacy policy is at https://wordpress.org/about/privacy/.
Credits
Austin Ginder of Anchor Hosting ( anchor.host · @anchorhost ) reviewed Keel for security, and the plugin is better for it. Thank you, Austin.
Keel grew out of Better by Default, a WordPress defaults plugin written by the same author (@dknauss) as a teaching version for the Edmonton WordPress meetup, WPYEG: https://github.com/WPYEG/Better-by-Default
Better by Default is published under the GPL-3.0-or-later; its sole author additionally licenses the portions carried over here under the GPL-2.0-or-later. Keel keeps its core architecture and adds further hardening and admin defaults adapted from the Agency Experience plugin (GPL-2.0-or-later).
Agency Experience is itself a hard fork of the 10up Experience plugin by 10up (GPL-2.0-or-later): https://github.com/10up/10up-experience — so several of Keel’s adapted defaults ultimately descend from code first written for 10up Experience. Copyright in that work is retained by 10up and its contributors, and 10up retains its marks; Keel is not affiliated with or endorsed by 10up. See LICENSE for the full GPL-2.0 text.
Support This Plugin
Keel is free and will stay free. If it saves you an afternoon of securing a new site, or keeps a staging server from emailing your client’s customers, you can support its maintenance through GitHub Sponsors .
Bug reports and feature requests are welcome on the issue tracker: https://github.com/dknauss/keel/issues . If you have found a security problem, please report it privately rather than in a public issue — SECURITY.md ships with the plugin and says how.
See it in action
Screenshots & previews.
Site Health → Status. Whether your version of WordPress has known vulnerabilities, which secure fix is available for it, and what WordPress itself is offering.The Passwords help tab. How Keel's password rules work, and exactly what the breach check sends: five characters of a hash, never the password.Site Health → Info. Every default and its current state on one page, so you can see what Keel is doing to your site without opening the settings.Settings → Site Defaults. Every default is one switch with the reason it exists written beside it.Network Admin → Settings → Network Policy. A Super Admin chooses safeguards for every site on a multisite network; each site's own choices return when the policy is lifted.
02 / Source details
Gettingstarted.
01In your WordPress dashboard, go to Plugins → Add New , search for “Keel Defaults”, and install it. You can also upload the zip through Plugins → Add New → Upload Plugin , or copy the plugin folder into wp-content/plugins/ .
02Activate it. Keel’s starting choices are applied on activation; nothing changes before that.
03Visit Settings → Site Defaults to review the starting choices and adjust anything for this site.
Settings that could disrupt another service are off until you choose them, with one exception: Keel stops other sites displaying yours inside a frame. If your site is meant to be embedded, for example in an intranet dashboard, a visual-review service, or a kiosk or signage screen, set Frame options to “Leave unchanged” under Security and Attack Surface.
Deactivating stops Keel’s behavior while keeping your choices for a future reactivation. Uninstalling removes its settings.
03 / Source details
Frequently asked questions.
What changes when I activate Keel? Will it break my site?
Keel applies its starting choices and gives you one screen to review them. Comments, trackbacks, and pingbacks are turned off; public author archives are hidden; other sites cannot put yours inside a frame; and new uploads get lowercase filenames. Settings that could affect another service you rely on are left off until you enable them.
Nothing is deleted. Keel does not edit or remove your posts, pages, media, users, or comments. Disabling comments hides them and closes the forms; turning the setting off brings them back. Uninstalling removes only Keel’s own settings.
Everything Keel does is visible and reversible, and each setting explains its practical effect before you change it. The default most likely to surprise you is frame protection: if another site or service is meant to display yours in a frame, that frame will usually show as a blank box. Set Frame options to “Leave unchanged” to allow it. Also review the settings after activation if a service publishes to your site through XML-RPC or depends on a feature you intend to turn off.
Keel says this version is insecure. What should I do?
Read the message in Site Health. Keel tells you whether a secure fix is available for the version of WordPress you are on, whether WordPress is offering it, and whether something is preventing automatic updates. If the install button is offered, an authorized administrator can use it to install that fix. If there is no secure fix, Keel says so clearly; plan an upgrade to a newer version rather than assuming one exists.
Why has email stopped working on my staging site?
Keel blocks outgoing email outside production by default. This protects real customers and clients when a live database is copied to staging or a local machine. It does not block email on your live site. Turn Non-Production Email off in Settings → Site Defaults when your test site needs to send email.
Can I use Keel on client sites or multisite?
Yes. Keel is built for independent sites, agencies, freelancers, and multisite networks. On a network, a Super Admin uses Network Admin → Settings → Network Policy to choose which defaults apply everywhere. The policy is visible and locked on each site, but it does not destroy the local choices underneath it; remove a policy later and each site returns to its own saved choice.
Passwords are the one setting that works differently on a network. The setting is stored per site, but WordPress keeps one list of users for the whole network, so a password set on any site becomes that person’s password everywhere. For one rule across the network, set the password policy in Network Policy.
Can I use Keel with another security or defaults plugin?
Usually, yes, but choose one plugin to own any particular setting. Keel helps by showing likely overlaps in Site Health, so you can compare the two instead of discovering a disagreement later.
Does Keel control plugin and theme auto-updates?
Yes. Separate plugin and theme controls offer Enabled, Disabled, and Leave unchanged. Both default to Leave unchanged, preserving WordPress’s per-item choices and other filters. Explicit choices do not rewrite those per-item settings; later filters and global update restrictions still apply. There is no minor-only channel for plugin or theme releases. On multisite, network policy wins, otherwise the main site’s Keel setting decides for the shared files, and only a Super Admin can change it. Site Health → Status, under Update diagnostics, reports the cached filter decisions, not installation guarantees.
Why is there no password strength meter?
WordPress’s strength meter advises the person typing but cannot refuse a password, and passwords set through the REST API, WP-CLI, or a form without scripts never meet it. Keel instead checks length, known breaches, a blocklist, and personal details such as your own name on the server, where the checks cannot be bypassed.
Can I download a report for support?
Yes. Go to Settings → Site Defaults and use Download JSON under Export Settings and Diagnostics. The authenticated download includes validated policy choices and cached diagnostic summaries, with unknown evidence marked explicitly. It excludes site/user identifiers, raw option records, callback paths and full plugin/theme inventories. On multisite, network-management authority is required. Review the file before sharing it; downloading does not refresh diagnostics or run update checks.
Can I set these in code instead?
Yes. Many defaults can be set with a wp-config.php constant or a filter, for example KEEL_DISABLE_HIBP or KEEL_ALLOW_NONPRODUCTION_MAIL . A constant wins over the settings screen, and the screen shows when a setting is being overridden. The full list is in the plugin’s documentation on GitHub.
FinderPress Media Auditor helps site administrators scan for broken images, missing Media Library files, unreachable media URLs, and other media issues across WordPress content. Use it to audit images, video, audio, PDFs, featured images, and attachment files without sending scan data to an external
The Accepted Payment Methods plugin is a straightforward, lightweight solution that enhances your website by displaying visually appealing icons of the payment methods you accept. This plugin is ideal for a variety of websites, including e-commerce platforms, service-oriented websites, and informati