Installing WordPress on XAMPP creates a local Windows site for theme work, plugin testing, content imports, and configuration checks before anything changes on a hosted server. The XAMPP stack keeps the web server, database, files, and first administrator account on the workstation, so the install can be rebuilt or removed without touching production data.
XAMPP for Windows packages Apache, PHP, MariaDB, phpMyAdmin, and the XAMPP Control Panel into one local install. A default setup serves browser projects from the local htdocs document root and exposes the stack homepage at http://localhost/ after Apache starts.
Use XAMPP as a development stack, not as the runtime for a public site. WordPress hosting recommendations can be newer than the versions bundled with a local XAMPP package, so check the included PHP and database versions before using the local copy for compatibility testing.
https://www.apachefriends.org/download.html
WordPress currently recommends PHP 8.3 or newer with MariaDB 10.6+ or MySQL 8.0+ for hosted sites. Use the newest XAMPP package that fits the test and confirm the included versions when compatibility matters.
Installing under Program Files commonly causes write-permission problems when editing files under htdocs.
XAMPP uses the MySQL label in the control panel even when the packaged database server is MariaDB.
If Apache fails to start, stop the existing listener on port 80 first, especially IIS or the World Wide Web Publishing Service.
http://localhost/
C:\xampp\htdocs\wordpress-xampp
Keeping WordPress in its own folder avoids replacing the default XAMPP landing page and keeps the local URL predictable.
https://wordpress.org/download/
Copy the contents of the extracted wordpress directory into wordpress-xampp so the site opens at /wordpress-xampp/ instead of /wordpress/.
http://localhost/phpmyadmin/
Database name: wordpress_xampp Collation: utf8mb4_general_ci
Use the default utf8mb4 collation offered by the active MariaDB server unless the project already requires a specific language collation.
Username: wordpress_xampp Host: localhost Password: choose-a-strong-password Privileges: ALL on wordpress_xampp
The default root database account can work on a disposable local-only lab, but a dedicated user makes the local install closer to a hosted site.
http://localhost/wordpress-xampp/wp-admin/setup-config.php
Database Name: wordpress_xampp Username: wordpress_xampp Password: choose-a-strong-password Database Host: localhost Table Prefix: wp_
If WordPress cannot write wp-config.php automatically, copy wp-config-sample.php to wp-config.php inside C:\xampp\htdocs\wordpress-xampp, refresh the installer, and submit the same database values again.
Site Title: WordPress on XAMPP Username: localadmin Password: choose-a-strong-password Email: admin@example.test
Avoid the username admin on any install that might later be migrated or exposed outside the local machine.
http://localhost/wordpress-xampp/wp-admin/
http://localhost/wordpress-xampp/
Dashboard -> Settings -> Permalinks -> Post name
If WordPress shows rewrite rules instead of saving them automatically, copy the generated block into C:\xampp\htdocs\wordpress-xampp\.htaccess and save it.
Related: How to configure SEO-friendly URLs in WordPress
C:\> curl.exe -I http://localhost/wordpress-xampp/wp-login.php HTTP/1.1 200 OK Server: Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.2.12 Set-Cookie: wordpress_test_cookie=WP%20Cookie%20check; path=/; HttpOnly Content-Type: text/html; charset=UTF-8
A 200 OK response from wp-login.php confirms that Apache, PHP, WordPress, and the local project URL are working together.