Ninja Forms – The Contact Form Builder That Grows With You

The 100% beginner friendly WordPress form builder. Drag & drop form fields to build beautiful, professional contact forms in minutes.

v3.14.6Kevin StoverUpdated 2026-06-08Added Dec 21, 2011600k+ installs88% rating83% support resolved
23
Score
755
Errors
1,536
Warnings
+0
Change

Category Scores

Security0
Repo89
Performance95
Maintainability0

Top Issues by Category

security1,005
maintainability848
i18n267

Issues Details

2,291 issues found in latest scan

WARNING281
WordPress.Security.NonceVerification.Recommended

Processing form data without nonce verification.

WARNING214
WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedClassFound

Classes declared by a theme/plugin should start with the theme/plugin prefix. Found: "EDD_SL_Plugin_Updater".

ERROR165
WordPress.Security.EscapeOutput.OutputNotEscaped

All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"<div id='$error_id' class='error'><p>$error</p></div>"'.

WARNING150
WordPress.Security.ValidatedSanitizedInput.MissingUnslash

$_COOKIE[WP_SESSION_COOKIE] not unslashed before sanitization. Use wp_unslash() or similar

WARNING146
WordPress.Security.ValidatedSanitizedInput.InputNotSanitized

Detected usage of a non-sanitized input variable: $_COOKIE[WP_SESSION_COOKIE]

ERROR138
WordPress.WP.I18n.MissingTranslatorsComment

A function call to __() with texts containing placeholders was found, but was not accompanied by a "translators:" comment on the line above to clarify the meaning of the placeholders.

WARNING108
WordPress.DB.DirectDatabaseQuery.DirectQuery

Use of a direct database call is discouraged.

WARNING106
WordPress.DB.DirectDatabaseQuery.NoCaching

Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete().

WARNING87
WordPress.WP.EnqueuedResourceParameters.MissingVersion

Resource version not set in call to wp_enqueue_script(). This means new versions of the script may not always be loaded due to browser caching.

WARNING73
WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound

Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: &quot;&#039;nf_services_installed_&#039; . $plugin&quot;.

ERROR70
WordPress.WP.I18n.UnorderedPlaceholdersText

Multiple placeholders in translatable strings should be ordered. Expected "%1$d, %2$d", but got "%d, %d" in 'Action with ID %d not found in form %d'.

WARNING63
WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound

Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: &quot;$addon&quot;.

WARNING63
WordPress.Security.ValidatedSanitizedInput.InputNotValidated

Detected usage of a possibly undefined superglobal array index: $_FILES[&#039;nf_import_fields&#039;][&#039;tmp_name&#039;]. Check that the array index exists before using it.

ERROR59
WordPress.WP.I18n.TextDomainMismatch

Mismatched text domain. Expected 'ninja-forms' but got "ninja-froms".

ERROR55
WordPress.DB.PreparedSQL.NotPrepared

Use placeholders and $wpdb->prepare(); found $anon_subs_query

WARNING55
WordPress.WP.EnqueuedResourceParameters.NotInFooter

In footer ($in_footer) is not set explicitly wp_enqueue_script; It is recommended to load scripts in the footer. Please set this value to `true` to load it in the footer, or explicitly `false` if it should be loaded in the header.

ERROR47
missing_direct_file_access_protection

PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit;

ERROR39
PluginCheck.Security.DirectDB.UnescapedDBParameter

Unescaped parameter $actions_meta_sql[ 'insert' ] used in $wpdb->query()\n$actions_meta_sql[ 'insert' ] used without escaping.

WARNING39
WordPress.Security.NonceVerification.Missing

Processing form data without nonce verification.

WARNING37
WordPress.DB.PreparedSQL.InterpolatedNotPrepared

Use placeholders and $wpdb-&gt;prepare(); found interpolated variable $entriesTable at $entriesTable \n

ERROR34
wp_function_not_compatible_with_requires_wp

Function "wp_get_abilities()" requires WordPress 6.9.0, but your plugin minimum supported version is WordPress 6.7.0.

ERROR30
WordPress.Security.EscapeOutput.ExceptionNotEscaped

All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"' in '{$infix}'."'.

WARNING24
WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound

Functions declared in the global namespace by a theme/plugin should start with the theme/plugin prefix. Found: &quot;NF_Abstracts_Extension&quot;.

ERROR23
WordPress.DateTime.RestrictedFunctions.date_date

date() is affected by runtime timezone changes which can cause date/time to be incorrectly displayed. Use gmdate() instead.

WARNING14
WordPress.PHP.DevelopmentFunctions.error_log_error_log

error_log() found. Debug code should not normally be used in production.

Latest Snapshot

Findings

2,291

Errors

755

Warnings

1,536

Score History

First score snapshot

First scan completed Jun 19, 2026

v3.14.6 · Plugin Check 2.0.0 · Model 2026.06-mvp-static-v2

Jun 19, 2026

v3.14.6

23

Latest

Findings
2,291
Errors
755
Warnings
1,536
Plugin Check
2.0.0
Model
2026.06-mvp-static-v2

Related Plugins