# What AjaxPress does

> How AjaxPress turns a WordPress site into a single page application, and what that means for players, SEO and your theme.

Source: https://arraystory.com/docs/ajaxpress/what-is-ajaxpress/

On an ordinary WordPress site, every click on a link loads a whole new page. The screen goes white for a moment, and anything that was playing (a radio stream, a podcast, a video) stops. AjaxPress changes that. Visitors move from page to page without a full reload, and a player you choose keeps playing the whole time.

It works with your existing theme, page builder and plugins. There is nothing to rebuild and, for most sites, nothing to configure.

![AjaxPress in 60 seconds](https://r2.arraystory.com/docs/ajaxpress/ajaxpress-promo-60s.mp4?v=ceefda5134)

## What your visitors get

- **Players that never stop.** A live stream, podcast or music player keeps playing while visitors browse. This is what AjaxPress is best known for, and it is free.
- **No white flash between pages.** The next page loads out of sight and replaces the current one only when it is ready.
- **A loading indicator.** A thin progress bar (or a spinner) shows that something is happening.
- **Forms without a reload.** Contact forms, search, comments, logins and WooCommerce forms submit in place.
- **Working Back and Forward buttons**, with the right address in the address bar and the right page title.

## How it works

When a visitor first arrives, AjaxPress keeps that first page as a lightweight "shell" and shows your site inside a full-screen frame on top of it. When they click a link on your site:

1. AjaxPress loads the next page in a second, hidden frame.
2. When that page is ready, it swaps the two frames, updates the address bar and title, and copies the new page's SEO tags into the shell.
3. Anything you marked as persistent, such as your player, lives in the shell rather than in a page, so it is never reloaded.

Each page still loads as a normal, complete WordPress page. Your theme's scripts, sliders, galleries and widgets run exactly as they would without AjaxPress, so they don't need any special handling.

> [!NOTE]
> Links to other websites, links that open in a new tab, downloads, `mailto:` and `tel:` links, and anything in wp-admin load the normal way. See [Which links AjaxPress handles](https://arraystory.com/docs/ajaxpress/which-links-ajaxpress-handles/).

## SEO

Nothing changes for search engines:

- Every page keeps its real address. AjaxPress uses the browser's History API, so there are no `#!` URLs.
- Search engine crawlers (Googlebot, Bingbot and the other major ones) are served your pages without AjaxPress at all.
- For visitors, the canonical link, meta description, robots tag, Open Graph and Twitter tags, and JSON-LD structured data are updated on every page change. Yoast SEO, Rank Math, All in One SEO and SEOPress all work.

## Free and Pro

Everything above is in the free plugin from wordpress.org. [AjaxPress Pro](https://arraystory.com/docs/ajaxpress/ajaxpress-pro/) is a separate add-on plugin for sites that want more:

| Feature | Free | Pro |
| --- | --- | --- |
| Ajax navigation, forms, Back and Forward | Yes | Yes |
| Persistent players you can mark up | Yes | Yes |
| Check my player: see which players AjaxPress finds | Yes | Yes |
| Persistent players found automatically (auto-detect) or picked with a CSS selector (Media Players) | | Yes |
| Exclude Links, Custom CSS, scroll to top, admin bypass | Yes | Yes |
| Loading bar or spinner | Default style | Fully styled |
| Hover prefetch (pages load before the click) | | Yes |
| Page transitions (fade, slide, flip, scale) and loading cursor | | Yes |
| Block keyboard reload | | Yes |
| SPA for the admin dashboard (before WordPress 7.0) | | Yes |
| Super Cache by Cloudflare | | Yes |
| Export, import and reset settings | | Yes |
| Priority support | | Yes |

## Next steps

- [Install and set up AjaxPress](https://arraystory.com/docs/ajaxpress/install/)
- [Keep audio or video playing across pages](https://arraystory.com/docs/ajaxpress/keep-audio-or-video-playing-across-pages/)
