How to Fix 'Connected Without Internet' on Samsung Phone (Android Wi-Fi Error)
Fix 'Connected without internet' on Samsung A12 and other Samsung phones. Step-by-step guide covering DNS reset, network settings, and Android fixes.
- Root cause 1: Samsung's Captive Portal Detection fails to verify internet connectivity, triggering the 'Connected without internet' warning even when the connection is valid — common after Android updates or on restrictive networks.
- Root cause 2: Corrupted DHCP lease, stale DNS cache, or misconfigured IP assignment causes the phone to associate with the Wi-Fi access point but fail to route external traffic properly.
- Root cause 3: Third-party VPNs, firewall apps, or Private DNS settings (e.g., DNS-over-TLS) can block Samsung's connectivity check servers (connectivitycheck.gstatic.com), producing a false 'no internet' status.
- Quick fix summary: Start by forgetting and reconnecting to the Wi-Fi network, then reset network settings via Settings > General Management > Reset > Reset Network Settings. If the issue persists on a Samsung A12 or any Samsung phone, disable Private DNS, switch DNS to 8.8.8.8, or use ADB commands to disable the captive portal check.
| Method | When to Use | Time | Risk |
|---|---|---|---|
| Forget & Reconnect Wi-Fi | First troubleshooting step for any Samsung phone showing 'connected without internet' | 2 min | None — no data loss |
| Change DNS to 8.8.8.8 / 8.8.4.4 | ISP DNS is unreliable or blocking resolution; works on Samsung A12 and all models | 3 min | Low — only affects name resolution |
| Disable Private DNS (DoT) | Private DNS or DNS-over-TLS blocks captive portal check servers | 1 min | Low — reverts to default DNS behavior |
| Reset Network Settings | Multiple networks affected or settings corrupted after OTA update | 5 min | Medium — clears saved Wi-Fi passwords, Bluetooth pairings |
| ADB Disable Captive Portal Check | False positive from Samsung captive portal detection; device functions normally but shows warning | 5 min | Low — reversible; requires USB debugging |
| Static IP Assignment | DHCP server assigns conflicting or unreachable gateway | 5 min | Low — must match network subnet correctly |
| Factory Reset (Last Resort) | All other methods fail; persistent system-level corruption | 30–60 min | High — erases all data |
Understanding the 'Connected Without Internet' Error on Samsung
When your Samsung phone displays 'Connected without internet' beneath a Wi-Fi network name, Android's ConnectivityService has successfully associated with the access point at the Layer 2 level but cannot confirm external internet reachability at Layer 3/Layer 7. Samsung's One UI adds its own captive portal detection layer on top of AOSP, which can produce false negatives in certain environments.
The exact string you will see in the Wi-Fi status area is:
Connected without internet
On older Samsung firmware (One UI 3.x and below), this may appear as:
Connected, no internet
On Samsung A12 devices running Android 12 or One UI 4, the notification also appears in the status-bar tooltip when you tap the Wi-Fi icon.
How Samsung's Captive Portal Detection Works
Android (including Samsung One UI) periodically sends HTTP probes to a Google-owned endpoint:
- Primary probe:
http://connectivitycheck.gstatic.com/generate_204 - Fallback probe:
http://www.google.com/generate_204
The device expects an HTTP 204 No Content response. If the probe returns anything other than 204 — or times out — Android marks the network as having no verified internet and shows the warning. This mechanism is completely independent of whether your browser can actually load websites.
Step 1: Diagnose the True Problem
Before applying fixes, determine whether the issue is real (no internet) or a false positive (internet works, probe fails).
Test 1 — Open a browser: Navigate to http://example.com (not HTTPS). If it loads, you have a false-positive captive portal detection issue, not a real connectivity problem.
Test 2 — Ping from ADB: Connect the Samsung phone via USB with USB Debugging enabled and run:
adb shell ping -c 4 8.8.8.8
adb shell ping -c 4 google.com
If the IP ping succeeds but the hostname ping fails, you have a DNS issue. If both fail, the routing/gateway is broken.
Test 3 — Check DHCP lease: Run adb shell ip route and adb shell ip addr show wlan0 to inspect the assigned IP, subnet mask, and default gateway. Compare against expected values from your router's admin panel.
Test 4 — Probe manually:
adb shell curl -v http://connectivitycheck.gstatic.com/generate_204
If this returns anything other than HTTP/1.1 204 No Content, a firewall, DNS filter, or transparent proxy is intercepting the probe.
Step 2: Apply the Appropriate Fix
Fix A — Forget and Reconnect (All Samsung Models)
- Open Settings > Connections > Wi-Fi.
- Long-press the affected network name and select Forget.
- Wait 10 seconds, then reconnect by entering the password.
- If the error persists, proceed to Fix B.
Fix B — Change DNS Manually (Samsung A12 & All Models)
- Go to Settings > Connections > Wi-Fi.
- Tap the gear icon next to the connected network.
- Tap IP Settings and switch from DHCP to Static.
- Keep the IP address and gateway as-is (copy from DHCP info above).
- Change DNS 1 to
8.8.8.8and DNS 2 to8.8.4.4. - Tap Save and reconnect.
Fix C — Disable Private DNS
- Go to Settings > Connections > More Connection Settings > Private DNS.
- Select Off or switch from Private DNS provider hostname back to Automatic.
- Reconnect to Wi-Fi and retest.
Private DNS using dns.adguard.com, one.one.one.one, or similar providers can block the connectivitycheck.gstatic.com domain, causing a permanent false-positive warning.
Fix D — Reset Network Settings
- Open Settings > General Management > Reset > Reset Network Settings.
- Tap Reset Settings and confirm.
- Re-enter Wi-Fi passwords and retest.
Warning: This clears all saved Wi-Fi networks, Bluetooth pairings, mobile data settings, and VPN configurations.
Fix E — Disable Captive Portal Detection via ADB (Advanced)
This is the preferred fix for power users experiencing persistent false positives, especially on corporate or campus networks that block Google's probe endpoints.
Enable USB Debugging (Settings > About Phone > tap Build Number 7 times > Developer Options > enable USB Debugging), then run:
adb shell settings put global captive_portal_detection_enabled 0
To restore default behavior later:
adb shell settings put global captive_portal_detection_enabled 1
Alternatively, redirect the captive portal probe to your own server or a neutral endpoint:
adb shell settings put global captive_portal_server "clients3.google.com"
adb shell settings put global captive_portal_https_url "https://clients3.google.com/generate_204"
adb shell settings put global captive_portal_http_url "http://clients3.google.com/generate_204"
Fix F — Assign a Static IP with Correct Gateway
If adb shell ip route shows a missing or incorrect default route, manually assign a static configuration:
- Settings > Connections > Wi-Fi > gear icon next to network.
- Expand Advanced and set IP Settings to Static.
- Set IP address to a free address in the subnet (e.g.,
192.168.1.200). - Set Gateway to your router's IP (e.g.,
192.168.1.1). - Set Network prefix length to
24. - Save and reconnect.
Step 3: Verify the Fix
After applying any fix, confirm resolution:
adb shell curl -o /dev/null -s -w "%{http_code}" http://connectivitycheck.gstatic.com/generate_204
Expected output: 204
Also confirm DNS resolution:
adb shell nslookup google.com
adb shell getprop net.dns1
adb shell getprop net.dns2
Samsung A12-Specific Notes
The Samsung Galaxy A12 runs on either Exynos 850 or MediaTek Helio P35 chipsets and ships with Android 11/One UI 3.1, with upgrade paths to Android 12. Several A12-specific issues have been documented:
- Android 12 OTA regression: A known bug in One UI 4.1 for A12 causes captive portal checks to time out on 2.4 GHz networks with WPA2-Personal security. Workaround: connect to 5 GHz band if available, or apply Fix E above.
- Battery optimization interference: If Wi-Fi is set to disconnect during sleep, the DHCP lease may not renew properly. Go to Settings > Device Care > Battery > Background Usage Limits and ensure your network-dependent apps are not restricted.
- Wi-Fi power saving mode: Developer Options > Wi-Fi scan throttling — disable this on A12 to prevent delayed network state updates.
Frequently Asked Questions
#!/usr/bin/env bash
# Samsung 'Connected Without Internet' Diagnostic & Fix Script
# Requirements: Android SDK Platform Tools (adb) installed and in PATH
# USB Debugging must be enabled on the Samsung device
# Usage: bash samsung_wifi_fix.sh
set -euo pipefail
echo "=== Samsung Wi-Fi Connectivity Diagnostics ==="
echo ""
# Step 1: Verify ADB connection
echo "[1/8] Checking ADB device connection..."
adb devices
echo ""
# Step 2: Check current Wi-Fi state
echo "[2/8] Current Wi-Fi interface info:"
adb shell ip addr show wlan0 2>/dev/null || echo "wlan0 interface not found"
echo ""
# Step 3: Check default routing table
echo "[3/8] Routing table (expect a default route via gateway):"
adb shell ip route show
echo ""
# Step 4: Test raw IP connectivity (bypasses DNS)
echo "[4/8] Pinging 8.8.8.8 (Google DNS - raw IP, no DNS needed):"
adb shell ping -c 4 -W 2 8.8.8.8 || echo "FAIL: No IP-level connectivity — check gateway/DHCP"
echo ""
# Step 5: Test DNS resolution
echo "[5/8] Testing DNS resolution for google.com:"
adb shell nslookup google.com || echo "FAIL: DNS resolution failed — check DNS server settings"
echo ""
# Step 6: Probe captive portal endpoint manually
echo "[6/8] Probing Samsung/Google captive portal check endpoint:"
RESPONSE=$(adb shell 'curl -o /dev/null -s -w "%{http_code}" http://connectivitycheck.gstatic.com/generate_204' 2>/dev/null || echo "000")
if [ "$RESPONSE" = "204" ]; then
echo "SUCCESS: Received HTTP 204 — captive portal check passes. Issue may be Samsung UI bug."
else
echo "FAIL: Received HTTP $RESPONSE instead of 204 — probe is being intercepted or blocked."
fi
echo ""
# Step 7: Read current captive portal settings
echo "[7/8] Current captive portal global settings:"
adb shell settings get global captive_portal_detection_enabled
adb shell settings get global captive_portal_mode
adb shell settings get global network_avoid_bad_wifi
adb shell settings get global captive_portal_server
echo ""
# Step 8: Apply fix — disable captive portal false-positive detection
echo "[8/8] Applying fix: Disabling captive portal detection to suppress false-positive warning..."
adb shell settings put global captive_portal_detection_enabled 0
adb shell settings put global captive_portal_mode 0
adb shell settings put global network_avoid_bad_wifi 0
echo "Fix applied. Rebooting device to apply changes..."
adb reboot
echo ""
echo "=== Fix complete. Device is rebooting. ==="
echo "After reboot, check Wi-Fi — 'Connected without internet' should be gone."
echo ""
echo "To REVERT these changes (restore default Samsung behavior), run:"
echo " adb shell settings put global captive_portal_detection_enabled 1"
echo " adb shell settings put global captive_portal_mode 1"
echo " adb shell settings put global network_avoid_bad_wifi 1"
echo " adb reboot"Error Medic Editorial
The Error Medic Editorial team is composed of senior DevOps and SRE engineers with 10+ years of experience diagnosing Android networking issues, Linux connectivity bugs, and cloud infrastructure failures. We specialize in translating complex system-level behavior into actionable, step-by-step troubleshooting guides for developers, IT administrators, and everyday users. All fixes are lab-tested on physical devices including Samsung Galaxy A12, A52, S21, and S23 series running Android 11 through Android 14.
Sources
- https://source.android.com/docs/core/connect/network-access
- https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/services/core/java/com/android/server/connectivity/NetworkMonitor.java
- https://stackoverflow.com/questions/21699886/what-does-connected-no-internet-access-mean-in-android
- https://developer.samsung.com/android/guides/wifi-overview.html
- https://issuetracker.google.com/issues/175337580
- https://developer.android.com/reference/android/net/ConnectivityManager