Better Popunder Script – Most Advanced Pop Script

Better Js Popunder Script is a flexible popunder script provides an easy way to create pop under, pop up, tab under (not focused), new tab ..

It’s standalone script, does not require any library such as jQuery or Modernizr.

It works on every browsers, mobile browsers, especially Chrome 46+ (where others’ script fail).

And also is the best popunder script on the market. You can compare our script with any competitors.

Lots of adnetworks and websites are using this script and they’re happy. You don’t need to worry about anything, just purchase then enjoy it.


Or click anywhere in this page to get popunder

Official Site


  • Make pop under/ pop up / tab under/ tab focus
  • Keep normal browser behaviors in most cases (when user click to button, checkbox, image, etc)
  • Bypass Adblock Plus
  • Supports multiple urls, random urls
  • Works on most of browsers: Chrome, even Chrome 46+, Firefox, IE, Safari, Mobile Browsers
  • Full customization
  • Easy install and use
  • Use OOP and elegant syntax
  • Supports Asynchronous loading
  • Easy to filter mobile and desktop traffic
  • Control number of pops per page
  • Can register or ignore to specific HTML tag names or elements (DOM)
  • Set cookie expire for pops, sizing poped window, etc..
  • Hidding traffic source (referer)
  • More APIs
  • and more..

How it works

Pop-under Pop-up Tab-under
Chrome < 67 Yes Yes
Firefox < 85 Yes Yes
Safari Yes Yes Yes
Yandex Yes Yes Yes
Opera Windows Yes Yes Yes
Opera Mac Yes Yes
IE 11 Yes Yes
Edge Yes Yes
Other browser (Windows, Mac, Linux) Yes ?
Mobile (all) Yes Yes Yes

In some cases of unable to make pop under , it will automatic switch to  use tab-under instead of.

Note: Please check the demo on different browsers and platforms before purchase it.

If you have any question, you can ask me via email before purchase it.

Someone use email as their own domain but was marked as spam by Google filter so i will not recieved their email. If you don’t see any response from me after 24-48 hours, please use gmail or another one to resend your email. If you have purchased and have not received license even you have give us your domain name, please use another email or ping me via Skype: ptcong90


To avoid someone steals your paid popunder script, we use license for this script.

Plan Description Expire Purchase
1 domain Hosted and Embedded in 1 domain.

You have to register your domain with us after received Purchase Receipt mail.

1 year  
Less than 10 domains Hosted and Embedded in 10 domains.

You have to register your domains with us after received Purchase Receipt mail.

1 year  
Unlimited (for adnetwork) Hosted in 1 domain, Embedded in any domain.

You have to register one domain that you will used to serve this script with us after receive Purchase Receipt mail.

1 year  

Note: *.domain means root domain and all of its subs.

Domain name in all above packages are not able to change after registered.  You have to purchase new license if you want to work/host it on another domain. We have discount 25% for this case. If you purchase 10 domains package, first time you have few domains, you can ask us for adding more domain in future, but previous domain are not able to change.

Different between  1 domain and unlimited domain

1 domain: script will works when you open with this script embedded, but if you use this script for other domain by adding this code <script src=””></script> to other domain, it will not works. If you’re adnetwork, have to use unlimited domain.

unlimited domain:  – adnetwork plan means script will works on any domain but must be hosted on only one registered domain. Just add <script src=””></script> this code to any domain you want. But if you download pop.js and upload to other domain and use code like <script src=””></script>, it will not works.

After purchase, please read our Purchase Receipt mail carefully and register your domain name with us to make this script work

Purchase this script you have

  • Popunder Javascript Files
  • Unlimited Impressions & Requests
  • Full Script Updates
  • Full Documentation & Tutorials
  • 24/7 Support


  • Do you offer support?
    • We offer 24/7 technical support and help with installation.
  • What happens after I pay?
    •  You will get an email right after you pay with the script (packed version) + demo license + full documents. You need to reply this email and give me your domain names corresponding with plan you purchased, i will give you license for that domains (in 24 hours).
  • What’s license file?
    • It’s a file that allows the script can run and hosted on domains you have registered with us. Please preserve the file (you will get it after given domains) and don’t override it by license file that you get from updates.
  • What’s different between  1 domain and unlimited domain ?
    • 1 domain: script will works when you open with this script embedded, but if you use this script for other domain by adding this code <script src=””></script> to other domain, it will not works. If you’re adnetwork, have to use unlimited domain.

    • unlimited domain:  script will works on any domain, just add <script src=””></script> this code to any domain you want. But if you download pop.js and upload to other domain and use code like <script src=””></script>, it will not works.

  • Can I modify the script?
    • Since 2.x, we don’t provide raw source code any more, but we provide more APIs, you can use hooks to customize and integrate with your tracking system
  • Does it work on mobile devices?
    •  Our popunder script works on every browser and is fully optimized for mobile devices.
  • Is it provides admin panel, customers manager ?
    • No, this just a simple javascript library such as jQuery used to make pop under, does not provide any admin panel or impression tracking. If you want to manage your customers, advertiser, impression, you need to build it by yourself.
  • How i get the updates ?
    • You will get an email includes download url for every update. If you don’t see it in your Inbox, please check Spam box, otherwise you can login to our site, on navigation menu, go to Checkout -> Payment History, there you can see the latest version of the script.
  • Is possible to make pop under on page load ?
    • There is no way to make pop under on page load (onload) event or before closing window. It’s possible if you’re in before 2007. Pop under only works when you touch/click to page content.

Let me know if you have any questions (email: [email protected]).

If you found any others’ script better than this script, please let me know to improve.

Change logs

  • version 2.11.28; 2023/04/04
    • Make tab under on mobile do the same on all mobile browser. when click to target=_blank
  • version 2.11.27; 2022/12/13
    • Auto switch to variable to flag pops if both localStorage and sessionStorage are blocked.
  • version 2.11.24; 2021/10/23
    • Auto switch to Storage to flag pops if cookie is blocked (3rd party cookie blocked issue in modern browsers)
  • version 2.11.21; 2021/04/30
    • Fixed infitiny pop issue in Chrome if pop script is loaded inside iframe.
  • version 2.11.20; 2021/01/31
    • Fallback to tab-under on Firefox 85+
  • version 2.11.19; 2020/09/15
    • Fixed coverTags sometime not working for new Chrome.
    • Optimize code.
  • version 2.11.12; 2019/12/12
    • Fixed issue when  use  mobile mode  in Firefox browser.
    • Fixed some small issues.
  • version 2.11.10; 2019/07/05
    • Fixed popup in Edge 17+
  • version 2.11.5; 2019/06/14
    • Improved pop performance in mobile.
    • Update to deal with Adblock (please read document)
  • version 2.11.4; 2019/02/14
    • Fixed some bugs
  • version 2.11.0; 2019/02/13
    • Fixed pop-under for Firefox 65
    • Fixed pop-under for Opera Window.
  • version 2.9.3; 2019/02/12
    • Temporarily switch to tab-under for Firefox 65
  • version 2.9.0; 2019/01/28
    • Added new feature tricksChrome (read docs)
  • version 2.8.25; 2019/01/24
    • Improved popup behavior
    • Fixed popup issue in MacOS FullScreen mode
  • version 2.8.24; 2018/12/01
    • Improved cover Tags options.
    • Fixed some small issues
  • version 2.8.21; 2018/05/30
    • Temporary switch to tab-under in Chrome 67
    • Fixed some smallissues
  • version 2.8.12; 2018/04/18
    • Try to work and compatible with all older browser versions  if possible.
    • Support Yandex browser.
  • version 2.8.10; 2018/04/17
    • Fixed shouldFire hook not working.
    • Fixed  known issues.
  • version 2.8.7; 2018/04/15
    • Fixed  pop under for old browser versions.
    • Fixed issue open many pops  (Chrome 64+)
    • Fixed issue in fallback option.
  • version 2.8.4; 2018/04/13
    • Improved performance.
    • Fixed  known  bugs.
  • version 2.8.0; 2018/04/12
    • Fixed popunder for  Chrome 64+ Mac, Windows and Safari 11
    • Added Event.bindOnce()
    • Added Utils.isUnderIframe()
    • Removed Utils.addQueryString()
    • Removed Utils.isFlashEnabled()
    • Removed forceUnder option
  • version 2.7.37; 2018/02/12
    • Temporary switch to tab-under  in Chrome 64 .
    • Fixed some small issues.
  • version 2.7.16; 2017/10/21
    • Fixed popunder on Windows Chrome 62
    • Temporary switch pop-under to tab-under in Safari 11.
  • version 2.7.7; 2017/09/06
    • Fixed pop under in Windows Chrome 61.
    • Pop under on Mac Chrome will be tab-under without reload current page (temporary solution).
    • Fixed duplicate impression on Android Chrome.
  • version 2.6.7; 2017/08/09
    • Fixed pop under in Windows Opera 46+
  • version 2.6.5; 2017/08/08
    • Fixed some small issues.
  • version 2.6.1; 2017/07/28
    • Fixed pop under in Chrome 60
    • Fixed some small issues.
  • version 2.5.38; 2017/06/22
    • Improved user experience if pop is loaded and fired from iframe.
  • version 2.5.34; 2017/05/21
    • Fixed issue if pop script is loaded inside iframe with different domain.
  • version 2.5.32; 2017/05/11
    • Fixed pop-under issue on Chrome 59
    • Fixed issue on Opera – iOS
    • Fixed other small issues
  • version 2.5.25; 2017/04/20
    • Improved performance on Firefox 53
  • version 2.5.24; 2017/04/20
    • Fixed pop under on Chrome 58 Mac.
  • version 2.5.23; 2017/04/19
    • Fixed pop under on Chrome 60 Windows + Mac.
    • Fixed one small issue.
  • version 2.5.16; 2017/04/11
    • Fixed pop under issue on Chrome Mac 57.0.2987.133, Chrome Windows 58.
    • ignoreTo() and bindTo() now support selector (.class or #id are supported in all browsers). 
  • version 2.5.11; 2017/04/05
    • Improve pop under performance
    • Fixed some small pop under issues in Chrome 56+ Windows 10
  • version 2.5.4; 2017/03/29
    • Optimize performance
    • Fixed some issue if embeded in large page.
    • Fixed some important issues
  • version 2.5.0; 2017/03/27
    • Make the script great again.
    • Works on Chrome 56, 57 Windows, Mac on both Normal and Incognito mode.
    • Works on Opera 43 Windows, Mac both Normal and Incognito mode.
  • version 2.4.13; 2017/02/21
    • Added new setting initOnload to run pop after window loaded (window.onload) (read document about this). If your page is huge and slowly loading, set this to true on Chrome to avoid pop under issue.
  • version 2.4.8; 2017/02/14
    • Fixed some small issues
    • Fixed pop-under issue on Firefox Mac 51
  • version 2.4.2; 2017/01/29
    • Fixed pop-under issue on Chrome Mac 56+
    • Fixed small issue on Chrome Windows 56+
  • version 2.4.0; 2017/01/28
    • Fixed pop-under issue on Chrome Windows 56+
  • version 2.3.33; 2017/01/26
    • Fallback to tab-under in Chrome 56
    • Fixed some issues in Android
  • version 2.3.27; 2017/01/13
    • Now you can disable mobile sensitive by set mobileSensitive to -1
    • Fixed duplicate tab on iOS when slowly click on link with target=_blank.
    • Fixed some small issues.
  • version 2.3.22; 2016/12/07
    • Fixed some small issue on mobile iOS 10+ when user click to  an anchor _blank
  • version 2.3.21; 2016/12/01
    • Fixed issue in Firefox 50+ when use cookieExpires: -1
  • version 2.3.20; 2016/11/28
    • Fixed issue in Firefox 50
    • Added fallback to tab-under in Chrome 47 (dev)
  • version 2.3.18; 2016/11/23
    • Fixed webkitAnchorBlank (true) issue on Chrome if click to internal link
  • version 2.3.17; 2016/11/19
    • Fixed restore event issue on Safari Mac OS 10
  • version 2.3.16; 2016/11/18
    • Reduce mobileSensitive on Safari Mobile to avoid redirection issue. If you still facing with this problem, change mobileSensitive to 0
  • version 2.3.12; 2016/10/24
    • Added .getStack() and .emptyStack() API, please use .getStack() insteadof .stack (removed).
  • version 2.3.11; 2016/10/21
    • Fixed localStorage issue if load page by using data:
  • version 2.3.10; 2016/10/17
    • Cover some issues may occured in some special cases.
    • Optimized code
  • version 2.3.3; 2016/10/13
    • Fixed tab-under issue on Safari 10 macOS
  • version 2.3.2; 2016/10/11
    • Added new feature to limit domains for unlimited package.
  • version 2.3.1; 2016/10/11
    • Optimized code
    • Fixed duplicate impression in Google Chrome.
  • version 2.2.54; 2016/10/03
    • Fixed alert box problem in Firefox 49.0.1 (issues of  2.2.52)
  • version 2.2.52; 2016/09/30
    • Fixed problem with popunder inside iframe on Safai iOS and IE11
    • Fixed popunder on Firefox 49 (Win) (all other pop scripts fail on this case)
  • version 2.2.49; 2016/09/24
    • Fixed problem with popunder in Safari 10
    • Fixed mobileSensitive option not working
    • Fixed FastClick issue when stack is empty.
    • More stable
  • version 2.2.38; 2016/08/27 (stable)
    • Added new config option noOpenerHijiacking to avoid popped window use window.opener.location. (read document about this)
    • Improved performance.
    • Fixed some know bugs in previous versions
  • version 2.2.26; 2016/08/21
    • Improved fast click technique
    • Added new config option mobileSensitive to control our fast click technique (read document)
    • Fixed small issues
    • More stable.
  • version 2.2.16; 2016/08/19
    • Fixed tab-under issue if pop inside an iframe.
    • Improve impressions in mobile.
  • version 2.2.11; 2016/08/18
    • Use fast click technique, should give more impressions on mobile.
  • version 2.2.8; 2016/08/18
    • Fixed issue if pop inside an iframe.
    • Fixed tab-under issue on Vivaldi browser and some other browsers
    • Improved user experience in Firefox, Safari when use tab-under and clicked to <a target=_blank>
    • Improve performance in Firefox when open pop-under (reduce browser laggy)
  • version 2.2.0; 2016/08/17
    • Allows to change BetterJsPop variable to other name to avoid conflicts with other adnetworks (due we have lot of adnetwork as customers) (read document)
    • Changed way to open pop (try to open our pop before others)
    • Added new config popFallbackOptions then will use when popunder is not available on desktop.
    • Added reset() API that can open all pop again without refresh page or waiting for cookie expired.
    • Fixed problem with tab under in iframe.
    • Fixed problem on iOS (multiple pop and expiration)
    • Removed justClicked() API
  • version 2.1.13; 2016/08/16
    • Added new API getLastEvent() to get last mouse event
  • version 2.1.8; 2016/08/12
    • Improve user experience in mobile when click to a link with target=_blank
  • version 2.1.7; 2016/08/11
    • Improved user experience in Opera Window
    • Added new API .coverElement() similar to coverTags but can cover any element you want.
    • Improve hook shouldFire, don’t need wrap your logic in justClicked() any more.
    • Improved Mobile detection
    • Fixed an issue on Android default browser.
  • version 2.0.18; 2016/08/10
    • Improved performance in mobile
  • version 2.0.17; 2016/08/09
    • Fixed problem in restoring events (user experience, website behaviors)
  • version 2.0.16; 2016/08/09
    • Fixed problem when user clicks to element inside <a> with Chrome Popunder
  • version 2.0.15; 2016/08/08
    • Make coverScrollbar available in all desktop browsers
    • Added new config option webkitAnchorBlank (default: true) to make pop under work on Chrome, Opera even when user click to a link with target=_blank
    • Added new config option forceUnder (default: false) check document to understand it.
  • version 2.0.14; 2016/08/07
    • Added new config option coverScrollbar  for Webkit browsers (Chrome, Safari, Opera), increase more pop performance (impressions)
  • version 2.0.9; 2016/08/04
    • Fixed problem with pop under if user double click to link fast (blank pop window, not full screen)
    • Improve code performance.
  • version 2.0.7; 2016/08/02
    • It’s stable now
    • Improved performance
    • Fixed some bugs
  • version 2.0.4; 2016/07/27
    • Fixed some know bugs
    • Fixed issue in IE 6 -> 9 (some previous versions do not work by a typo)
    • Optimize the code, smaller size, run faster
  • version 2.0.2; 2016/07/25

    • Fixed tab-under issue (open wrong url)
  • version 2.0.1; 2016/07/25
    • Rewrite all the script to  version 2.0 – amazing version, work better.
    • Rewrite all document, make it more clear and easier to use.
    • Bring pop under back to Chrome Mac
    • Work fine on Chrome 52,  Chrome 54 (Chrome Canary)
    • Since 2.0, we don’t provide raw source code any more, just packed version, but provide more APIs, you can use it to integrate with your tracking system or add your logic code to customize it by using hooks.
    • Use .config() to configure it instead of .perpage() or .flashUrl(), etc…
    • Improve pop on most of mobile browsers
  • version 1.2.0; 2016/07/21
    • Rewrite some codes to make it more dynamic and customizable.
    • Added new shouldFire option, justClicked() API (read document about it)
  • version 1.1.12; 2016/07/11
    • Fixed small issue with cover object tag + popUnder on Chrome Window
    • Allow pass a function to setTabUnderUrl method
  • version 1.1.11; 2016/06/23
    • Fixed small bug if website contains too many images and loading slow
  • version 1.1.10; 2016/06/17
    • Improve some codes, make it better
  • version 1.1.9; 2016/06/08
    • Fixed pop under issue on Firefox 47
  • version 1.1.8; 2016/05/31
    • A patch for 1.1.7 it’s wrong version and does not make pop under.
  • version 1.1.7; 2016/05/30
    • Fixed bug if pass a function to .add() method and use multiple pops perpage.
    • Improve some other features
  • version 1.1.6; 2016/05/25
    • Added more API
    • Disabled covering  iframe, video tags  as default, if you want to work with iframe, video tags, use .coverTag([‘video’, ‘iframe’])
  • version 1.1.5; 2016/05/13
    • Fixed bugs crash on Chrome Window, IE11
    • Improved some codes
  • version 1.1.4; 2016/05/13
    • Fixed issue with pop under on IE11 when open an external url (different domain)
  • version 1.1.3; 2016/05/12
    • Add new API .coverTags()  for managing iframe, video overlay. You also can disable overlay for any tag you want. (check our document)
  • version 1.1.2; 2016/05/12
    • Fixed a typo in Safari
  • version 1.1.1; 2016/05/11
    • Supports IE11 again.
  • version 1.1.0; 2016/05/05
    • Script now can handle when user click to <video>, <iframe> tag.
  • version 1.0.39; 2016/04/29
    • Add new API .ignoreTo() same as .bindTo() to tell pop under to ignore some elements or DOM nodes.
  • version 1.0.38; 2016/04/20
    • Improved popunder on Opera Window, now popunder is working as well on Opera all versions.
  • version 1.0.37; 2016/04/13
    • Fixed issue  counting number pop per page wrong on IE11.
  • version 1.0.36; 2016/04/06
    • Fixed small issue on Chrome Window, when user click to a checkbox/radio, it should make pop and keep browser’s normal behavior.
  • version 1.0.35; 2016/03/27
    • Supports passing url by function means you can use randomly url, do your logic to get pop url for every click (check our document)
    • Fixed small issue with .delay() in Chrome Window.
    • Fixed small issue on couting pop per page with tab.
  • version 1.0.34; 2016/03/25
    • Fixed issue that .delay() does not work with tab-under.
  • version 1.0.33; 2016/03/24
    • New option noReferer for hidding traffic source from popped url.
  • version 1.0.32; 2016/03/23
    • Improved .bindTo() method, now handle click inside element, DOM node better.
  • version 1.0.31; 2016/03/08
    • Temporary switch to use tab-under in Linux platform due popunder can’t works on Linux.
  • version 1.0.30; 2016/03/03
    • Don’t show #:xx in url when open tab-under in all browsers exclude IE (just for counting pop perpage when use tab-under).
    • Fixed issue when remove cookie (typo)
  • version 1.0.29; 2016/02/29
    • Fixed issue that .perpage() does not work when use tab-under
    • Improve beforeOpen option, now you can add your logic and return false to cancel pop.
    • Fixed issue on Opera Window 32bit.
  • version 1.0.27; 2016/02/28
    • Fixed small issue with use multiple pop perpage on Safari, Firefox if cookie is expired.
    • Added new API .delay(ms)  to set delay between pops
  • version 1.0.26; 2016/02/21
    • Improved binding to element feature. Now if you bind the pop to a <div> tag, and you click to a <span> inside the <div> it still works fine.
  • version 1.0.25; 2016/02/18
    • Temporary use tab-under for Opera Window < 35, latest version >= 35 still use pop-under
  • version 1.0.24; 2016/02/17
    • Added more APIs to BetterJsPop (Browser, Cookie, Logger) (check docs)
    • New feature for changing current url when opens tab-under (check docs)
    • Optimized flash.e.swf
  • version 1.0.23; 2016/02/08
    • Improve some codes
  • version 1.0.22; 2016/02/04
    • Fixed some small issues, CS.
    • Optimized some code.
    • Improved multiple tab-unders on Firefox, Opera, Safari.
    • Pass pop object and pop options to beforeOpen, afterOpen handlers.
  • version 1.0.21; 2016/02/04
    • Supports all MS IE legacy versions (5.5 to 11)
  • version 1.0.20; 2016/02/02
    • Can make pop under on Opera Mac, Windows as well.
    • Fixed some small issues.
  • version 1.0.19; 2016/01/26
    • Automatic switch to use tab-under on Chrome, Firefox if flash is ask to active.
    • Fixed popunder issue on Firefox  43.0.3 (Windows)
    • Temporary use tab-under for popunder and tab-under on Mac Chrome 48+ to avoid issue unable to turn off fullscreen mode.
  • version 1.0.16; 2016/01/21
    • Improved event restoring and tab-under on Safari and Chrome.
  • version 1.0.15; 2016/01/06
    • Add some code to handle some jQuery plugins such as prevents events from html tag  and makes this script not working
  • version 1.0.14; 2015/12/22
    • Added delay between pops on  Chrome to avoid facing with Blocking Message when use multiple pop per page.
    • Added new license.php file allows you can manage allowed domain if you have purchased unlimited plan.
  • version 1.0.13; 2015/12/21
    • Supports Firefox 45.
    • Fixed issues on Firefox 43 (Windows) – version
  • version 1.0.12; 2015/12/18
    • Add some code to handle <object> important CSS issue made by stupid designers (they force whole of <object> tags to { height: auto !important }, that effects to our flash element)
  • version 1.0.11; 2015/12/17
    • Switch to use tab under on Microsoft Edge.
  • version 1.0.10; 2015/11/30
    • Add some code to handle Flash is “Ask to active” in firefox.
  • version 1.0.9; 2015/11/23
    • New API for ignoring element’s listeners calling “preventDefault()” or “return false”. You should read document about this feature.
  • version 1.0.8; 2015/11/22
    • Fixed a bug of smart trigger feature on Android default browser, Firefox for android, IE11 desktop.
  • version 1.0.7; 2015/11/21
    • Fixed a bug if right click to a link in Firefox
    • New API for binding popunder to specific tag names or DOM nodes.
    • Improve some other features to make it smarter.
  • version 1.0.6; 2015/11/20
    • New option to filter  mobie/desktop traffic
    • New option to change cookie name
  • version 1.0.5; 2015/11/18
    • Improve some features for mobile browsers.
    • Improve  multiple tab unders for mobile and some desktop browsers.
    • New smart click trigger for element what user click on to get popunder.
  • version 1.0.4; 2015/11/16
    • New API for changing license file path.
  • version 1.0.3; 2015/11/07
    • Improve some features for mobile browsers.
  • version 1.0.2; 2015/11/05
    • Use fast click technique to make popunder on mobile faster (avoid annoying for users)
  • version 1.0.1; 2015/11/04
    • Fix issues on Safari 9.0.1 on El Capitan (by typo)

Categories: Javascript, Paid


  1. Hi, if i want buy full script 500 dollars for ad network, i can create ad net for pop-under, can you help me with new web site or give me some in formation, Thank you.

  2. i can not find how to pruchase, can u tell me?

Leave a Reply

Copyright © 2024 Code

Theme by Anders NorenUp ↑