Title: Defer for Contact Form 7
Author: Ryabinin Vitalii
Published: <strong>July 1, 2026</strong>
Last modified: July 1, 2026

---

Search plugins

![](https://ps.w.org/defer-for-contact-form-7/assets/banner-772x250.png?rev=3592120)

![](https://ps.w.org/defer-for-contact-form-7/assets/icon.svg?rev=3592120)

# Defer for Contact Form 7

 By [Ryabinin Vitalii](https://profiles.wordpress.org/ryabininvitaliy/)

[Download](https://downloads.wordpress.org/plugin/defer-for-contact-form-7.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/defer-for-contact-form-7/#description)
 * [Reviews](https://wordpress.org/plugins/defer-for-contact-form-7/#reviews)
 *  [Installation](https://wordpress.org/plugins/defer-for-contact-form-7/#installation)
 * [Development](https://wordpress.org/plugins/defer-for-contact-form-7/#developers)

 [Support](https://wordpress.org/support/plugin/defer-for-contact-form-7/)

## Description

On every page Contact Form 7 loads its dependencies (wp-hooks, wp-i18n) and its 
CSS into the `<head>`, blocking first paint. This plugin fixes that:

 * **Defer CF7 core** — moves wp-hooks/wp-i18n to the footer (you cannot `defer`
   them: an inline `wp.i18n.setLocaleData` block runs synchronously and would throw“
   wp is not defined”). CF7’s scripts leave the critical path.
 * **Async CSS** — the form stylesheet loads via `media=print` + onload-swap.

Both optimizations are idempotent and safe on every page. Strict dependency: with
Contact Form 7 inactive, the plugin does nothing.

#### A note on jQuery

This plugin does NOT defer jQuery — on purpose. Deferring jQuery is only safe when
EVERY jQuery-dependent script on the site is also deferred or in the footer; on 
an arbitrary site that is not guaranteed and breaks inline scripts in the head.

### Pro version

Defer for Contact Form 7 Pro adds lazy-loaded Google reCAPTCHA v3 — spam protection
without a PageSpeed hit:

 * Google’s api.js loads only on the first interaction with a form, so it never 
   appears in Lighthouse/PSI.
 * The score check is server-side; a fresh single-use token is fetched for every
   submission.
 * The badge is hidden with the required Google disclaimer (GDPR-friendly); configurable
   score threshold and action label.

The free version stays fully functional on its own.

### Support

Questions, bug reports or feature requests: https://www.linkedin.com/in/vitalii-
ryabinin/

## Screenshots

[⌊Plugin settings page under Contact <span aria-hidden=⌉⌊Plugin settings page under Contact <span aria-hidden=⌉→ Performance: defer/async toggles and the Pro reCAPTCHA v3 section.” class=”wp-image-9000001″ srcset=”https://i0.wp.com/ps.w.org/defer-for-contact-form-7/assets/screenshot-1.png?rev=3592120&w=300 300w, https://i0.wp.com/ps.w.org/defer-for-contact-form-7/assets/screenshot-1.png?rev=3592120&w=600 600w, https://i0.wp.com/ps.w.org/defer-for-contact-form-7/assets/screenshot-1.png?rev=3592120&w=900 900w” sizes=”(max-width: 599px) 50vw, 33vw” width=”1714″ height=”748″ loading=”eager” fetchpriority=”high” decoding=”async”/>](https://ps.w.org/defer-for-contact-form-7/assets/screenshot-1.png?rev=3592120)

Plugin settings page under Contact  Performance: defer/async toggles and the Pro
reCAPTCHA v3 section.

## Installation

 1. Upload the `defer-for-contact-form-7` folder to `/wp-content/plugins/`, or install
    the ZIP via Plugins  Add New  Upload.
 2. Activate the plugin. Contact Form 7 must be active.
 3. Both optimizations are on by default — there is nothing else to configure.
 4. To toggle them, go to **Contact  Performance**.

## FAQ

### Does this work with caching/optimization plugins?

Yes, but minifiers that combine and reorder scripts can interfere with the headfooter
move. Test with your cache plugin enabled.

### Does the plugin send any data anywhere?

No. It makes no external requests and stores no personal data.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Defer for Contact Form 7” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ Ryabinin Vitalii ](https://profiles.wordpress.org/ryabininvitaliy/)
 *   [ Freemius ](https://profiles.wordpress.org/freemius/)

[Translate “Defer for Contact Form 7” into your language.](https://translate.wordpress.org/projects/wp-plugins/defer-for-contact-form-7)

### Interested in development?

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

## Changelog

#### 1.0.0

 * Initial release: CF7 core defer + async CSS.

## Meta

 *  Version **1.0.0**
 *  Last updated **6 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.0**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [cf7](https://wordpress.org/plugins/tags/cf7/)[contact form 7](https://wordpress.org/plugins/tags/contact-form-7/)
   [defer](https://wordpress.org/plugins/tags/defer/)[pagespeed](https://wordpress.org/plugins/tags/pagespeed/)
   [performance](https://wordpress.org/plugins/tags/performance/)
 *  [Advanced View](https://wordpress.org/plugins/defer-for-contact-form-7/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/defer-for-contact-form-7/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/defer-for-contact-form-7/reviews/)

## Contributors

 *   [ Ryabinin Vitalii ](https://profiles.wordpress.org/ryabininvitaliy/)
 *   [ Freemius ](https://profiles.wordpress.org/freemius/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/defer-for-contact-form-7/)