What Is XML-RPC in WordPress and Is It Still Needed?
XML-RPC is WordPress's older remote API: clients POST XML commands to xmlrpc.php to log in, publish and send pingbacks. The block editor and modern apps use the REST API instead, so most sites can block XML-RPC safely. Keep it, restricted, only if Jetpack or a desktop editor that speaks MetaWeblog still depends on it.
For WordPress owners who see xmlrpc.php in their logs or security scans and want to know whether it is needed before blocking it.
knowledge
- Read time
- 5 min
- Sections
- 7
- Updated
- 14 Nov 2026
- Written by
- WebJi® team
Last editorial update: 14 November 2026.
What is XML-RPC in WordPress?
XML-RPC is a remote procedure call protocol: a client POSTs an XML document naming a method and its parameters to xmlrpc.php, WordPress runs that method and returns an XML response. It is how remote tools published to WordPress before the REST API existed, and WordPress has shipped it switched on by default since version 3.5 (2012).
<?xml version="1.0"?>
<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value><string>admin</string></value></param>
<param><value><string>password</string></value></param>
</params>
</methodCall>
Credentials travel inside the body of every authenticated call, which is part of why the endpoint attracts password guessing. Visiting the file in a browser sends a GET, so WordPress replies "XML-RPC server accepts POST requests only." That message means the endpoint is live, not broken.
What still uses XML-RPC in WordPress?
Jetpack's connection to WordPress.com, desktop blog editors that speak the MetaWeblog API, pingbacks and some older automation scripts still use XML-RPC; the block editor and most modern integrations use the REST API instead.
| Client | Uses XML-RPC? | If you disable it |
|---|---|---|
| Block editor and wp-admin | No, uses REST and admin-ajax | No change |
| Jetpack | Yes, for the WordPress.com connection | Jetpack features stop; restrict instead of disabling |
| Desktop editors (MarsEdit and similar) | Yes, MetaWeblog methods | Publishing from the app stops |
| Pingbacks and trackbacks | Yes, pingback.ping | Other blogs cannot notify you; rarely missed |
| Current WordPress mobile apps | Self-hosted sites can connect with application passwords over REST | Usually no change; test once |
If none of the rows that say "Yes" apply to your site, XML-RPC has no job there.
Why do attackers target xmlrpc.php?
Bots target xmlrpc.php for two reasons: it accepts login credentials outside the normal login form, and pingback.ping makes your server fetch any URL the caller supplies.
- Password guessing: each POST can test credentials without loading
wp-login.php, bypassing login-page CAPTCHAs and some lockout plugins. - system.multicall: packs many method calls into one request. Since WordPress 4.4, a failed login inside a multicall makes the remaining logins in that request fail, which blunted the "hundreds of guesses per request" trick, but every request still costs PHP time.
- Pingback abuse: your server can be told to request internal addresses (probing) or a third-party site (reflection in a flood).
- Resource drain: thousands of POSTs a day keep PHP workers busy even when every guess fails, which slows small shared plans.
You can see whether this is happening on your site by counting requests in the access log: grep -c "POST /xmlrpc.php" access.log. Reading those logs is covered in Apache log files explained.
How to check whether XML-RPC is enabled on your site
Send a system.listMethods call from outside the server; a list of methods means XML-RPC is fully active, while a 403 or 404 means something already blocks it.
curl -s -X POST -H 'Content-Type: text/xml' \
--data '<?xml version="1.0"?><methodCall><methodName>system.listMethods</methodName></methodCall>' \
https://example.in/xmlrpc.php
- Look for
pingback.pingandsystem.multicallin the reply. - Test both
wwwand non-wwwhosts; a block may cover only one. - If a security plugin is active, check its XML-RPC setting before adding a second rule.
Is XML-RPC still needed in 2026?
For most sites, no: if you publish only through wp-admin and do not run Jetpack or a desktop editor, you can block XML-RPC with no visible change. Keep it, restricted to the services that use it, if Jetpack is connected or an editorial tool depends on MetaWeblog methods.
There are three levels of response. Block xmlrpc.php at the web server so requests never reach PHP; disable only pingbacks if a client still needs authenticated methods; or allow Jetpack's IP ranges and deny everyone else. The WordPress xmlrpc_enabled filter alone only disables authenticated methods and leaves pingbacks answering, so it is not a complete block. Step-by-step code for each option, with tests, is in how to disable XML-RPC in WordPress.
XML-RPC vs the WordPress REST API
The REST API sends JSON to named routes under /wp-json/ using normal HTTP verbs, while XML-RPC sends XML envelopes to a single endpoint over POST. New integrations should use REST; XML-RPC should remain only for a client that cannot.
| Attribute | XML-RPC | REST API |
|---|---|---|
| Endpoint | One file, /xmlrpc.php | Many routes, e.g. /wp-json/wp/v2/posts |
| Format | XML, POST only | JSON, GET/POST/PUT/DELETE |
| Authentication | Username and password inside each call | Cookie + nonce, or application passwords (since WordPress 5.6) |
| Batching | system.multicall | Batch endpoint for selected routes |
| Used by | Jetpack, legacy editors, pingbacks | Block editor, apps, most plugins |
Closing XML-RPC is one item on a longer list; the WordPress security checklist covers the rest, and WebJi® WordPress hosting support can confirm whether a server-level rule already blocks the file on your account.
Frequently asked questions
Can I just delete xmlrpc.php?
It works until the next WordPress update, which restores core files including xmlrpc.php. A server rule that denies access to the file survives updates and stops requests before PHP starts, so it is the better approach.
Does blocking XML-RPC affect SEO?
No. Search engines crawl your pages and sitemaps, not xmlrpc.php. The only visible loss is incoming pingbacks, which most sites already disable because they attract spam.
Why do I see hundreds of POST /xmlrpc.php requests in my logs?
Automated bots scan every WordPress site and try credentials or pingback calls through that file. The traffic is usually harmless if passwords are strong, but it wastes server resources, so blocking the file or rate-limiting it is worthwhile.
Does a limit-login-attempts plugin cover XML-RPC?
Some do and some only watch wp-login.php. Check the plugin's settings for XML-RPC coverage, or block the endpoint at the server; limiting login attempts in WordPress compares the options.
Checked 14 November 2026 against the WordPress developer documentation · Reviewed by the WebJi® team, Jaipur.
Ready to get started with WebJi®?
Join 12,000+ businesses across India and overseas. INR pricing, 18% GST shown before payment and 24/7 email support in Hindi and English — average first reply under 60 minutes.