Troubleshooting

cURL error 28: Connection Timed Out — The WordPress Fix Guide

cURL error 28 means WordPress asked another server a question and nobody answered in time. Where the request originates, the timeouts to tune, and the DNS fix nobody expects.

cURL error 28: Connection Timed Out — The WordPress Fix Guide

cURL error 28: Connection timed out appears in error logs and email digests when WordPress’s HTTP layer gives up on an outbound request — an update check, a plugin phoning its license server, a feed fetch. The error is honest but incomplete: it names the moment of failure, not the party at fault. Three suspects, in order of likelihood.

Suspect 1: The other server is slow or down

The majority of cURL 28s: the external API being called (a license server, a shipping-rate API, a social feed) is slow. Nothing on your site is wrong — the fix belongs to the provider, or your plugin needs its timeout raised so the request succeeds eventually. Identify the caller: the error usually appears inside a plugin’s log or its admin notice; debug.log backtraces name the file too.

Suspect 2: Your server’s DNS resolution

The sneaky one: if your server’s DNS resolver is slow or broken, every outbound request accumulates resolution time, and unrelated plugins start timing out together. Test from SSH: curl -w "dns %{time_namelookup}s connect %{time_connect}s total %{time_total}s
" -o /dev/null https://api.wordpress.org
. namelookup above ~1s consistently → fix the resolver (/etc/resolv.conf, use 1.1.1.1/8.8.8.8). This one misconfiguration explains clusters of mysterious timeouts on otherwise fine sites.

Suspect 3: Timeouts tuned wrong

  • PHP max_execution_time too low kills long legitimate requests — batch imports and webhooks need 120s+.
  • Plugin-level HTTP timeouts: well-behaved plugins expose them; badly-behaved ones block page generation on a 30-second hang. Any plugin that calls an external API during front-end page loads is a performance liability regardless — the audit technique is in the performance test.
  • Cron-heavy sites: wp-cron making outbound calls on every visit amplifies hangs — offload to real cron (the standard fix, one wp-config line).

The diagnostic routine

  1. Find the failing request’s target URL (log or plugin).
  2. From the server, curl that URL with timing breakdown — if it times out there too, the fault is external or DNS.
  3. If external: raise the plugin’s timeout, or schedule its call off the page path.
  4. If DNS: fix the resolver; if neither: your host’s firewall may be blocking outbound — ask support with the URL in hand.

What does cURL error 28 mean in WordPress?

An outbound HTTP request from your server timed out — the remote server answered too slowly. The fix is usually on the remote side, your server's DNS, or the calling plugin's timeout setting.


How do I find which plugin causes cURL timeouts?

The debug.log backtrace names the calling file. Query Monitor also records outgoing HTTP requests with timing, attributed to the plugin that made them.


Why do multiple plugins time out at once?

Usually DNS: a slow resolver delays every outbound connection's namelookup. Test with curl -w timing from SSH; if namelookup exceeds ~1s, switch to a faster resolver.


Should I raise PHP max_execution_time to fix cURL 28?

Only for legitimate long operations (imports, webhooks). For page-load hangs it masks a plugin blocking the front end on a slow external call — fix the caller instead.

The WPForge editorial team: WordPress and WooCommerce engineers with a decade of combined experience in store builds, speed optimization, migrations and plugin audits. Every guide is based on real client projects and hands-on testing, reviewed before publishing.

Revision history

  • October 2026 — Facts, version numbers and links re-verified against current vendor data.

We re-test and update our guides when tools change — see our editorial policy for how. Editorial policy →