An easy-to-use local testing server is one of the most important tools in a WordPress developer’s utility belt. Developing in a local environment lets you make changes to dev sites quickly and easily without having to transfer files anywhere. It also greatly reduces the risk of making and breaking changes on a live web server.
While many computers are capable of hosting a WordPress site without needing to install any extra packages, there are a few advantages that a dedicated local development environment can offer. For example: most devs work on more than one project, so it’s extremely helpful to be able to quickly spin up a new web server with dedicated urls.
If you’re developing a WordPress theme or plugin, it’s also often necessary to make sure that your code runs well on different servers, under different versions of PHP and MySQL. Being able to switch those on the fly or at least select different configs for different dev sites is extremely helpful.
Most of all though, you shouldn’t have to be a sysadmin in order to be able to spin up, maintain, and tear down development environments on your local server. So we need something that’s easy to use and will do most of the heavy lifting for us.
Note that I won’t be covering CLI-based local dev environments in this article. We have another complete article covering Laravel Valet, VVV ( Vagrant), Chassis, etc.
There are quite a few different applications and tools that fit this bill, but for now we’ll be comparing the four GUI-based tools that seem to me to be the largest players in this space: XAMPP, MAMP (Pro), DesktopServer, and Local.
The major differences between MAMP, XAMPP, DesktopServer, and Local is the ability to manage multiple sites and ease of use. While Local and DesktopServer allow you to customize domain names for local sites, XAMPP and MAMP (unless you’re using Pro) don’t. If you’re looking for a free alternative, XAMPP and Local are clear choices here. The rest of the applications offer paid versions with more features.
If you’re making use of WP-CLI in your daily workflow, you might dislike Local. You can’t directly just enter in the working directory and execute CLI commands. You’ll need to go through their application to open the SSH container separately for each site. I personally make use of WP-CLI on a daily basis and this is what’s keeping me from switching to Local completely from MAMP Pro.
Let’s have a more in-depth look at these local WordPress development environments.
XAMPP, which you may be surprised to find out is pronounced “Shamp”, is probably the oldest local development environment around and possibly the most complex. XAMPP stands for X-platform Apache MariaDB, PHP and Perl – It’s definitely the only local server that still touts Perl support as a major feature, so if you like to keep it TMTOWTDI, then this is definitely the one for you. Though you can also find the Perl command line tool optionally available in MAMP Pro.
Installing XAMPP seems easy enough: just download the correct installer from their website and run it. In practice, however, maybe not so much. I first tried installing XAMPP under a new user on my Mac laptop. The installer ran fine but that’s about all it did. Once the install was complete and I found the app that I needed to run (hint for users of Alfred/Spotlight as app launchers: it’s not called “XAMPP”, it is intuitively called “Application Manager”), I couldn’t get the server to start up.
I chalked this up to the fact that I already had MAMP and Local installed on that machine and there was probably some conflict. Unfortunately, XAMPP never gave me any errors that I could track down. It just tried forever to start its server.
After my failed attempt, I created a MacOS virtual machine so that I could provide XAMPP with the completely blank slate that it needed. Again, the install process went smooth. This time the server started up as expected.
Getting up and Running With WordPress
SHAMP’s XAMPP’s interface, at least on MacOS, is less than intuitive. Maybe it’s because I’m used to a more app-based approach but it took me a bit to realize that most of XAMPP’s interface exists as a web app on localhost. From there, it offers links to download bitnami modules for WordPress and other applications. For MacOS, you’ll need to install WordPress directly in XAMPP’s site directory as recently OS X native modules have been deprecated. You’ll need to install XAMPP-VM for Mac to be able to install XAMPP addons separately.
The bitnami installer worked well enough. I did have to restart it a couple of times before figuring out that I also needed to go back to the “Application Manager” and turn on MySQL. When it finished its thing, I had a new WordPress install at 127.0.0.1 which isn’t exactly what I wanted. I had thought that at some point in this process I would be able to select a hostname like “wp-local.dev”, but this wasn’t the case.
In order to use hostnames other than “//localhost”, you have to dive into XAMPP’s Apache config and define them yourself. You then have to edit your computer’s hosts file to set up the domain name. While this is technically what any local development setup requires, most of the other options that we’re reviewing here do this for you pretty seamlessly. I’m not super impressed with XAMPP for this reason alone.
XAMPP starts off with a silly pronunciation (we can all agree, it should be pronounced “zamp”) and continues the trend with a clunky install process, unintuitive interface, and lack of features. XAMPP isn’t all bad. It’s been around for longer than most web developers and offers a workable solution. XAMPP is an open source platform and supports all major operating systems including Windows, MacOS, Linux etc. Also, it’s completely free.
After the harrowing install process, I don’t have the will to boot up a Windows or Linux VM just to test this out. I’ll give XAMPP the benefit of the doubt and say that maybe the Mac app is just their weak link. If you’re looking for a local dev environment on MacOS and you don’t need to write Perl, I don’t recommend XAMPP.
XAMPP doesn’t allow you to switch between different versions of PHP, instead it has different download packages with different PHP versions included.
; ; ; ; ; (1/5 semicolons) Meh. At least it comes with an uninstaller.
MAMP (which comes with no pronunciation guide and so I’m assuming it’s pronounced “potato”) is the second most tenured local server that I know of. Again with the acronyms here, MAMP stands for Mac Apache MySQL and PHP. Earlier it was a MacOS only application but it’s now available for Windows too. So if you ever wanted to switch to Windows for local development, MAMP is an option.
MAMP installation was a breeze compared to SHAMPP. You can probably chalk this up to MAMP’s focus on the Mac platform because the installer looks and feels at home on MacOS. It runs quickly, and actually installs an app called MAMP. Additionally, it installs MAMP Pro which you can use as a free trial for 2 weeks but will cost you $79 after that.
Getting Up and Running with WordPress
MAMP is a pretty general-purpose offering and the free version doesn’t package installers for WordPress or any other applications. You will have to spend 5 minutes doing it yourself. With MAMP (free), this DIY requirement just involves unzipping the latest release of WordPress in MAMP’s default webroot at
/Applications/MAMP/htdocs/, creating a database. You can do this via phpMyAdmin (easily accessible from MAMP’s webstart page http://localhost), and then follow the normal WordPress install instructions. MAMP’s webstart even gives you PHP snippets for connecting to MySQL that you can use as a cheat sheet.
However, with MAMP Pro, you get a package installer for WordPress (and other apps) which really makes it easy to create a site in seconds.
MAMP, like XAMPP, doesn’t give you much help in creating virtual hosts. While it does give you a couple of options for server environments (you can use Apache or Nginx, as well as select between a couple PHP and MySQL versions), it doesn’t let you run multiple types of environments at the same time or do any of the legwork of setting up new sites for you. MAMP Pro also provides Python, Perl, and Ruby via the command line.
MAMP Pro, on the other hand, does all of this and more via an easy-to-use, albeit ugly, native application. You can also easily switch between different versions of PHP, a number of PHP versions are included in the application but you can always download additional versions through their built-in installer.
Full disclosure: MAMP Pro is my daily driver. I’ve been using MAMP Pro for a number of years and have found it to be reliable, adequately configurable, and a bit slower than Local. The latest version of MAMP Pro even comes with installers for various applications including WordPress. The WordPress installer seems to work well and intuitively enough. It lets you customize username, password, database user/password etc during the process. MAMP Pro also allows you to create your own SSL certificates during site creation, though you’ll need to add the certificate to your macOS keychain to avoid showing SSL errors in browsers.
;;; ; ; (3/5 semicolons) MAMP (free) is definitely easy to install and use, but will fall short for devs who need to set up multiple sites.
MAMP Pro Rating
;;;; ; (4/5 semicolons) MAMP Pro picks up where MAMP left off and is well worth its $79 price tag. Honestly, I’m only withholding the last semicolon because I still have two more reviews to do and I don’t want to have to refactor this highly intuitive rating system.
Until recently, DesktopServer has been the only GUI-based local environment built specifically for WordPress developers. As far as I can tell, DesktopServer bundles XAMPP and serves as an extension to the XAMPP server that automatically installs WordPress and handles creating virtual servers and hosts file entries for you automatically.
There is a paid version of DesktopServer that adds features like multisite support (hint: you can just convert a site to multisite manually), as well as some utilities and integrations. The main reason to upgrade seems to be that the free version will only let you create three sites, while the $100/yr premium version lifts this limitation.
There’s more to this three site limitation, as explained by Marc Benzakein, Operations Manager at ServerPress.
First off, the 3-site limit. It’s really not a limit in that you can actually create as many sites as you want, but you ARE limited to the number of sites you can manage at one time. In other words, you can always have three sites going, but in order to create a new one, you need to delete one to make room for it.
I’m beginning to think that this installation section is a bit superfluous as the install process for DesktopServer is pretty much the same as MAMP or XAMPP. You just launch the installer package and mash at the “next” button until you realize that you actually clicked a button that said “finish”. It worked!
Getting Up and Running with WordPress
Honestly, just keep mashing that next button. This is where DesktopServer really shines when compared to MAMP/XAMPP. Because it’s built for WordPress development specifically, the DesktopServer app is primarily a wizard that lets you install new WordPress installs under their own
.dev.cc domain names. This works great and it’s super quick.
For a WordPress developer who doesn’t want to fuss with too many settings, DesktopServer is a great option. There’s a part of me that wants to be upset about the three site limit of the free version. But it does so much for you for free that I imagine it’d be a hard sell if the free version wasn’t limited by the number of sites you can install.
As a long-time MAMP Pro user, I do wish that DesktopServer had a better site management UI. I also miss the ability to configure PHP and MySQL versions which seems to be entirely missing from DesktopServer.
In general, the DesktopServer UI is a bit weird as it’s essentially an infinitely looping wizard rather than a traditional app. So it’s really designed for making a few big changes like copying, moving, and removing sites. It’s much less intuitive when you just want to check on the state of things.
Following the same suite as XAMPP, DesktopServer doesn’t allow you to switch between different PHP versions which makes it less interesting for me.
All in all, I’d say DesktopServer works well for WordPress site developers. It may be a little basic for someone who needs to develop and test themes or plugins in varied deployment scenarios. It’s available for both Windows as well as Mac.
;;;; ; (3/5 semicolons) DesktopServer is super easy to use and gets you up and running with WordPress in a snap, but might be a little too basic for developers who need to test in different server environments.
Local is the fastest and most intuitive and well designed application among all. Originally called Pressmatic, Local was later acquired by Flywheel who has since been giving it away for free to all new users. Flywheel was also recently acquired by WP Engine, so Local is now a WP Engine product.
Local is packed with a bunch of useful features including an Apache or Nginx web server, SSL certificates, MailHog, and XDebug support. Local also allows developers to build their own addons to modify or extend Local’s functionalities.
On top of the free version, Local offers two paid plans for individuals and teams costing $20/month and $50/month respectively. Recently, Local was renamed as Local “Lightning”, which as the name suggests works lightning fast. Comparatively, it feels faster than any application I’ve reviewed in this article.
Local Lightning doesn’t even come with an installer package like the other apps I’ve covered so far. Instead you just launch the app and if it’s your first time running it, you’ll be greeted with the following screen:
Local is a cross-platform application and supports all major operating systems. While it used to run in virtual containers, Local Lightning makes use of system-level software to run your sites, which makes it much faster. Local does a great job isolating it’s software, and you can even use Local alongside something like MAMP or XAMPP. You can also configure different MySQL/PHP versions per site while creating it, with the option to download different versions.
Getting Up and Running with WordPress
Like DesktopServer, Local is a WordPress-centric offering, so whenever you create a new site, it’s a WordPress site out of the box. What’s more, Local gives you quite a few options in terms of server type (Apache or Nginx), PHP version, and MySQL. Setting up a new site in Local is quite quick and can be made even quicker by setting up a blueprint which essentially copies all files, databases, config files, and Local settings.
I can’t say enough nice things about Local. It’s really the best of both worlds between something like DesktopServer or MAMP and the more advanced/developer-focused WordPress development environments.
As mentioned before, Local offers a variety of server environment options and automatically sets up WordPress (including both variations of multisite) for you. It provides an easy interface to share your sites on the internet using Ngrok. It will automatically set up SSL for your sites, open source MailHog integration to catch outbound emails… the list goes on. The best part about Local is that all of this is currently included in the free version of the product.
Local also comes with WP-CLI installed by default, but you can’t just open up your site’s folder and start running WP-CLI commands. You need to open the site shell in Local. Local does make this very easy, just right click the site name in the sidebar and select “Open Site Shell”. The experience around this could be better.
Same as Mamp Pro, Local also allows you to switch between different versions of PHP but you cannot install a custom PHP version. However, Local does come with 2-3 pre-installed versions of PHP which makes it easier to test in different environments.
Local also supports community developed addons which helps you modify and extend the app’s functionality. Though their most recent version Local Lightning only supports one addon out of 5, offering you to enable XDebug support for PHPStorm.
;;;;, • (4.5/5 semicolons) Local is almost perfect. It is the most complete UI-based local development solution for WordPress developers on the market, and it’s mind-bogglingly free. I would have given it a perfect 5 if WP-CLI was somehow accessible directly.
What’s the Best Local WordPress Development Environment?
Day-to-day I still use MAMP Pro for most of my local development. Not only because I’ve been using it for years and I’m already entrenched, but also because I often need to access my dev sites via the CLI. With PHPStorm’s built-in terminal, it’s really easy to run a CLI command on the fly without having to go through the app’s UI and opening terminal separately as seen in Local.
If I were working on a Windows operating system, which I might do at some point, and probably even if I were starting from scratch today, Local would be the obvious choice.
Once you’ve chosen your local development environment tool, see our advice on the best setup for your local WordPress development environment.
What do you use for your local WordPress or other web development projects? Are there other GUI-based tools that you think I should have covered on this list? Is there anything else you’d like to know more about when it comes to setting up your local development environment? Let us know in the comments!
This article was originally written by Jeff Gould in 2017 and has since been updated.