This guide explains how to receive test ads in your ads integration. It is
important to use test ads during development so that you can click on them
without charging Google advertisers. If you click on too many ads without being
in test mode, you risk your account being flagged for invalid activity.
The quickest way to enable testing is to use Google-provided demo ad units.
These ad units are not associated with your AdMob
account, so there's no risk of your account generating invalid traffic when
using these ad units.
Here are demo ad units that point to specific test creatives for each format:
If you want to do more rigorous testing with production-looking ads, you can
now configure your device as a test device and use your own ad unit IDs that
you've created in the AdMob UI.
Test devices can either be added in the AdMob UI or programmatically using the
Google Mobile Ads SDK.
Follow the steps below to add your device as a test device.
Add your test device in the AdMob UI
For a simple, non-programmatic way to add a test device and test new or existing
app builds, use the AdMob UI.Learn
how.
Add your test device programmatically
If you want to test ads in your app as you're developing, follow the
steps below to programmatically register your test device.
Load your ads-integrated app and make an ad request.
Check the console for a message that looks like this:
<Google> To get test ads on this device, set:
GADMobileAds.sharedInstance.requestConfiguration.testDeviceIdentifiers =
@[ @"2077ef9a63d2b398840261c8221a0c9b" ];
Re-run your app. If the ad is a Google ad, you'll see aTest modelabel
centered at the top of the ad (banner, interstitial, or rewarded ad):
For native advanced ads, the headline asset is prepended with the stringTest mode.
Ads with thisTest modelabel are safe to click. Requests, impressions, and
clicks on ads in test mode won't show up in your account's reports.
Testing with mediation
Google's demo ad units only show Google ads. To test your mediation
configuration, you must use theenable test devicesapproach.
Mediated ads donotrender aTest modelabel. You are responsible for
ensuring that test mode is enabled for each of your mediation networks so that
these networks don't flag your account for invalid activity. See each network's
respectivemediation guidefor
more information.
If you aren't sure whether a mediation ad network adapter provides a test mode,
it is safest to avoid clicking on ads from that network during development. You
can use theadNetworkClassNameproperty on any of the ad formats to figure out which ad network served the
current ad.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[[["\u003cp\u003eThis guide explains how to display test ads during development to avoid invalid activity flags on your AdMob account.\u003c/p\u003e\n"],["\u003cp\u003eYou can receive test ads using Google-provided demo ad units or by enabling test mode for your own ad units.\u003c/p\u003e\n"],["\u003cp\u003eWhen using demo ad units, remember to replace them with your own ad unit IDs before publishing your app.\u003c/p\u003e\n"],["\u003cp\u003eTo enable test mode, add your device as a test device either through the AdMob UI or programmatically using the provided code snippet.\u003c/p\u003e\n"],["\u003cp\u003eEnsure test mode is enabled for your mediation networks to prevent invalid activity concerns when testing with mediation.\u003c/p\u003e\n"]]],["To test ads, use Google's demo ad units or enable test mode with your own units. Demo units avoid account issues and offer specific IDs for various ad formats, but must be replaced before publishing. Test mode, which is necessary for mediation testing, allows production-like ads by either adding a device via the AdMob UI or programmatically, setting a device ID. Test ads show a \"Test mode\" label; mediated ads do not, requiring individual network test mode configurations to prevent invalid activity.\n"],null,["Select platform: [Android](/admob/android/test-ads \"View this page for the Android platform docs.\") [iOS](/admob/ios/test-ads \"View this page for the iOS platform docs.\") [Unity](/admob/unity/test-ads \"View this page for the Unity platform docs.\") [Flutter](/admob/flutter/test-ads \"View this page for the Flutter platform docs.\")\n\n\u003cbr /\u003e\n\nThis guide explains how to receive test ads in your ads integration. It is\nimportant to use test ads during development so that you can click on them\nwithout charging Google advertisers. If you click on too many ads without being\nin test mode, you risk your account being flagged for invalid activity.\n\nThere are two ways to get test ads:\n\n1. Use one of Google's [demo ad units](#demo_ad_units).\n2. Use your own ad unit and [enable test mode](#enable_test_devices).\n\nPrerequisite\n\n- Complete [Get Started](/admob/ios/quick-start).\n\nDemo ad units\n\nThe quickest way to enable testing is to use Google-provided demo ad units.\nThese ad units are not associated with your AdMob\naccount, so there's no risk of your account generating invalid traffic when\nusing these ad units.\n| **Key Point:** Make sure you replace these IDs with your own ad unit ID before publishing your app.\n\nHere are demo ad units that point to specific test creatives for each format:\n\n| Ad format | Demo ad unit ID |\n|-----------------------------------------------------------|------------------------------------------|\n| [App Open](/admob/ios/app-open) | `ca-app-pub-3940256099942544/5575463023` |\n| [Adaptive Banner](/admob/ios/banner) | `ca-app-pub-3940256099942544/2435281174` |\n| [Fixed Size Banner](/admob/ios/banner/fixed-size) | `ca-app-pub-3940256099942544/2934735716` |\n| [Interstitial](/admob/ios/interstitial) | `ca-app-pub-3940256099942544/4411468910` |\n| [Rewarded Ads](/admob/ios/rewarded) | `ca-app-pub-3940256099942544/1712485313` |\n| [Rewarded Interstitial](/admob/ios/rewarded-interstitial) | `ca-app-pub-3940256099942544/6978759866` |\n| [Native](/admob/ios/native) | `ca-app-pub-3940256099942544/3986624511` |\n| [Native Video](/admob/ios/native/video-ads) | `ca-app-pub-3940256099942544/2521693316` |\n\nEnable test devices (Test mode)\n\nIf you want to do more rigorous testing with production-looking ads, you can\nnow configure your device as a test device and use your own ad unit IDs that\nyou've created in the AdMob UI.\n\nTest devices can either be added in the AdMob UI or programmatically using the\nGoogle Mobile Ads SDK.\n\n\nFollow the steps below to add your device as a test device.\n| **Key Point:** iOS simulators are automatically configured as test devices.\n\nAdd your test device in the AdMob UI\n\nFor a simple, non-programmatic way to add a test device and test new or existing\napp builds, use the AdMob UI. [Learn\nhow](//support.google.com/admob/answer/9691433).\n| **Key Point:** New test devices typically start serving test ads in your app within 15 minutes, but it can also take up to 24 hours.\n\nAdd your test device programmatically\n\nIf you want to test ads in your app as you're developing, follow the\nsteps below to programmatically register your test device.\n\n1. Load your ads-integrated app and make an ad request.\n2. Check the console for a message that looks like this: \n\n ```\n \u003cGoogle\u003e To get test ads on this device, set:\n GADMobileAds.sharedInstance.requestConfiguration.testDeviceIdentifiers =\n @[ @\"2077ef9a63d2b398840261c8221a0c9b\" ];\n ```\n Copy your test device ID to your clipboard.\n3. Modify your code to set the test device ID through\n [`testDeviceIdentifiers`](/admob/ios/api/reference/Classes/GADRequestConfiguration#testdeviceidentifiers):\n\n Swift \n\n let testDeviceIdentifiers = [\"2077ef9a63d2b398840261c8221a0c9b\"]\n MobileAds.shared.requestConfiguration.testDeviceIdentifiers = testDeviceIdentifiers \n https://github.com/googleads/googleads-mobile-ios-examples/blob/66edbf824f3d3cfa30bae69bb6b86004b01674b8/Swift/advanced/APIDemo/APIDemo/Snippets/RequestConfigurationSnippets.swift#L23-L24\n\n Objective-C \n\n NSArray *testDeviceIdentifiers = @[ @\"2077ef9a63d2b398840261c8221a0c9b\" ];\n GADMobileAds.sharedInstance.requestConfiguration.testDeviceIdentifiers = testDeviceIdentifiers; \n https://github.com/googleads/googleads-mobile-ios-examples/blob/66edbf824f3d3cfa30bae69bb6b86004b01674b8/Objective-C/advanced/APIDemo/APIDemo/Snippets/RequestConfigurationSnippets.m#L28-L29\n\n | **Caution:** Be sure to remove the code that sets these test devices before you release your app.\n4. Re-run your app. If the ad is a Google ad, you'll see a **Test mode** label\n centered at the top of the ad (banner, interstitial, or rewarded ad):\n\n | **Note:** To see the **Test mode** label, you need to be using an SDK version of 7.59.0 or higher. In versions 7.26.0 to 7.58.0 the label will say Test Ad.\n\n For native advanced ads, the headline asset is prepended with the string\n **Test mode**.\n\nAds with this **Test mode** label are safe to click. Requests, impressions, and\nclicks on ads in test mode won't show up in your account's reports.\n| **Note:** Mediated ads do *NOT* render a **Test mode** label. See the following section for details.\n\nTesting with mediation\n\nGoogle's demo ad units only show Google ads. To test your mediation\nconfiguration, you must use the [enable test devices](#enable_test_devices)\napproach.\n\nMediated ads do *not* render a **Test mode** label. You are responsible for\nensuring that test mode is enabled for each of your mediation networks so that\nthese networks don't flag your account for invalid activity. See each network's\nrespective [mediation guide](/admob/ios/mediation) for\nmore information.\n\nIf you aren't sure whether a mediation ad network adapter provides a test mode,\nit is safest to avoid clicking on ads from that network during development. You\ncan use the\n[`adNetworkClassName`](/admob/ios/api/reference/Classes/GADBannerView#adnetworkclassname)\nproperty on any of the ad formats to figure out which ad network served the\ncurrent ad."]]