This is a super high level question but it would be good to get a couple of summary answers. What are the main pros and cons of Craft versus WordPress?
I have a lot of experience with WordPress (8+ years), and I like it. I have less experience with Craft (obviously), though I like it more. Here's my 2 (obviously opinionated) cents regarding WordPress vs. Craft:
Benefits of WordPress (vs. Craft)
- Free (although a Craft Pro license is super cheap, and you typically need at least 2 or 3 paid plugins to make WordPress usable as a CMS)
- Open source (although Craft is built on Yii, which is open source as well, and the full Craft codebase is on GitHub)
- Huge community & amount of resources available – although actually sifting through it all and finding quality content can be a chore/difficult – a lot of it is outdated or just bad practice
- High quality 3rd party services available for hosting (WPEngine etc), backups/security (VaultPress) and core management (ManageWP) – although if stuff like that is your thing you can use similar services w/ Craft installs; they're just not tailor-made to Craft
- Plugin management. Being able to search for, install and update plugins from the Dashboard is great – although Craft will soon have its own built-in "plugin store" and it will be curated, which is a huge plus. Update: Since writing the original answer, Craft 3 has launched and has a built-in Plugin Store inside the Control Panel, which can be used to browse, install, manage and purchase plugins (all commercial plugins have trial versions, and there are loads of free ones too). If clicking buttons in a virtual Store is not your thing, Craft also has first-party support for Composer)
- WooCommerce is good (and free) (although Craft Commerce is out and is looking very nice) Update: Craft Commerce 2 beta is now available, and is looking even nicer
- Dashboard is easy to use (though I think Craft's CP is on par and IMO makes a better job with keeping things clean and simple)
- The built-in media library/uploader/image editing is pretty good (although it still doesn't have folders. Why on earth doesn't it have folders) ** Update: Craft 3 has a simple image editor for cropping, rotating and focus points**
- There's a plugin for everything (...and you'll need them. In my experience, Craft installs typically needs fewer – and more to the point; less CMS-critical – plugins.)
- There's a hook or filter for everything (although with their inconsistent naming conventions and priority hell you'll quickly build yourself a maze if you're not careful. Craft primarily uses well-documented events to enable plugin authors to "hook" into and affect the app lifecycle, with fairly self-explanatory names)
- WordPress has multi-site (although it's pretty half cooked and loaded with gotchas) **Update: Craft 3 also has multi-site, although it's less geared to the use case of running completely separate sites under the same CMS install, and more to the use case of maintaining separate content for different target groups/languages/etc)
- WordPress is stable as hell. Not that there aren't bugs, but breaking changes are very rare (there are "deprecated" APIs still in the codebase that are years old). The WP core team is super focused on backwards compatibility, which means important stuff aren't likely to change in a big way anytime soon – however, it also means that much of the codebase is outdated and/or inconsistent. In comparison, Craft is still fairly young and feels much more in flux. This doesn't mean that Craft breaks all the time – it doesn't, bugs are relatively rare and P&T have generally been super quick w/ bug fixing. Compared to WP, there have been bigger changes between major versions, though (mainly for plugin developers, not so much in terms of frontend code/templating or content modelling). Basically P&T/Craft is dedicated to staying modern and lean whilst WordPress is dedicated to not pissing off a gazillion users. These are very different approaches to building and maintaining a CMS, and one may resonate more for you than the other. – WordPress has a RESTful API built-in. I haven't tried it, so I couldn't say if it's any good. Craft doesn't have a REST API in core, but for the quick'n'easy stuff there's the first party Element API plugin. Beyond that, since Craft 3 came out it's actually quite easy to go totally headless with Craft.
Weaknesses of WordPress (vs. Craft)
- No templating engine (some might deem this a good thing. I'm not among them; personally I recommend Timber for using Twig in WordPress themes)
- No advanced custom fields – although ACF exist and is a must-have for any WP install. Full disclosure; I actually prefer parts of ACF to Craft's built-in custom fields – for instance its export/import and conditional functionality is stellar. Update: In place of the WYSIWYG of yore, WordPress has this new-fangled thing called "Gutenberg" now, which is kind of like a core modular content system. I haven't tried it, but personally I think it looks like a total trainwreck. Also, both conditionals and import/export is supposedly coming to Craft core in a 3.x update
- WordPress is not really a CMS, but a blogging platform – no matter what they tell you. Unless you're building a traditional blog, you'll constantly be fighting the core (yes WordPress has custom post types and taxonomies, but they feel tacked on and are cumbersome to work with, compared to Craft or ExpressionEngine)
- The architecture. Most of WP's core and its theme/plugin APIs aren't even OOP, forget MVC. Again I recommend Timber, which in addition to adding Twig support enables you to build themes using an optional, pseudo-MVC pattern.
- There's a lot of redundancy. Even as a fairly basic blog platform, there's a ton of built-in functionality in WP that you'll never need for the average site, and that you will want to remove or deactivate. It's like starting with a Pollock painting and applying paint remover until you have something you can draw on, instead of just starting with a blank sheet of paper in the first place
- Obtuse APIs (naming conventions are practically nonexistent and the APIs are super inconsistent, which means you need to look up everything)
- Security issues (though its actually very easy to secure a vanilla WP install, its still an issue and always will be, as long as WP is the most popular CMS on the planet)
- No built-in multilingual support (WPML is decent, but fairly pricy and also big and slow, in my experience)
- WordPress is really strict and opinionated about routing, and creating custom routes is needlessly complex (although Timber will help out here, as well)
- Hierarchical content and custom ordering is hell (there are plugins but ew)
- Confusing relationship between presentation and content. In WordPress, any custom post types or taxonomies is creating w/ PHP code, usually residing in your theme. This creates a confusing relationship between presentation and content modelling which is totally absent in Craft. The big paradox here is that while Craft isn't really designed to be "theme-able", it still has a much clearer separation between content and presentation than WordPress. (Related WP pro tip: Consider building a custom plugin to add your CPTs and taxonomies, keeping it out of your theme)
The above is obviously quite opinionated, and I'm clearly partial to Craft.
Obviously, just like with Craft you can basically build anything with WordPress and I find that for the most part, the two systems are fairly interchangeable. There are a few use cases where Craft is obviously the better choice though – e.g. multilingual sites, or sites w/ a lot of hierarchical content. Apart from blogging, I'm having more difficulty coming up with use cases where WordPress is a more obvious choice, which says a lot.
In my opinion, if you're new to both WordPress and Craft, I personally think the experience you'll gain using Craft will be more portable and valuable in the long run, and that you'll experience far fewer gotchas, headaches and WTFs in the process.
Personally, the #1 pro for me w/ Craft vs. WordPress is has been that almost from the get-go (there's a learning cure, sure), I was able to work more effectively w/ Craft than I ever did in WordPress, and I felt more confident about the quality of my work – even with the mentioned 8+ years experience with WordPress. The super consistent codebase/APIs, stellar documentation and Twig templating are important factors here. I also prefer the smaller, super dedicated community around Craft, this SE and the official Slack team being good examples.
PS: I should also note the excellent official support Craft comes with, courtesy of Pixel and Tonic.
In additional to Mats Mikkel's excellent answer and the links that Brad posted, I find Craft is a much better fit for the types of clients I work with and the types of sites I build and my opinion is based on that.
Keep in mind there's no best software; it all depends on requirements.
If you're doing small, brochure based websites with a dozen or so pages, with minimal content requirements—say, where the you or the client is going to touch the content maybe once a week—either CMS is probably going to work. But I find Craft excels at larger sites with multiple sections (post types) and content that needs to relate to each other in some way.
WordPress is great for DIY outfits.
I find designers who don't know much HTML and CSS tend to gravitate towards its already prebuilt themes and plugins. As a professional who makes money doing design, it's a hard pill to swallow recommending WordPress, just on that basis alone. I say that, not to be anti- competive but a big part of the design process is not just the way something looks, it's the way it functions and how it's built.
Ben Parizek made a great comment on the control click podcast; we're not just building a client a website, we're building them 2 websites, meaning the back end is just as important. A lot of developers don't put that much stock in the user experience. WordPress is pretty friendly. With Craft, it's even more focused.
WordPress can sometimes open up too many options. I've cleaned up my share of WordPress messes because the client ultimately didn't know what they were getting themselves into by installing some free theme that ended up not being supported anymore.
In Craft, the bar is set a lot higher.
You build exactly what you want and Craft excels at letting you control exactly what the browser spits out. There's no themes or clients monkeying with plugins. The site is going to work exactly the way you specified and built it, for better or worse. I find you build up with Craft; WordPress is kind of like the lego set that comes with most of the pieces already glued together. You can build on top of the set but if there's functionality you simply don't need—for example, like comments, as Mats mentioned, you start to "fight" the system.
WordPress' asset management is poor at best; no folders, you can't even categorize by default, and it saves all assets by year and month. If you want to replace an image, you have to delete it first, causing all sorts of hassle. Again, you can work around those things with custom code or a plugin or 2, but why when Craft is available?
Assets are first-rate citizens in Craft
You can add fields to content and to make it manage whatever "metadata" you need. If you deal with any corporate clients, where document management is necessary (hello freakin' PDFs!), Craft is going to save your soul.
Craft has limited image editing capabilities—I'd really love to see some kind of cropping ability—but again, based on the types of clients I work with, they either own a copy of an image editor, have someone on staff to help out, or we can help out with that. Remember, a CMS is not an editor and I think that's where WordPress and Craft start to diverge in philosophies.
UPDATE: Since I wrote this, Craft 3 has built-in support for cropping, flipping, rotating, and adding focal points to images. Amen.
Plugins to the rescue?
Again, the common answer to virtually every WP question is: there's a plugin for that. Yes, you can throw some plugins behind WordPress, but at the end of the day, now you're relying on more 3rd party code that you didn't write and are probably on the hook to support.
I know that P&T already provides excellent support. "But what happens when they go belly up?" is the usual retort. There's more of a chance that an individual plugin vendor is going to quit the game than someone supporting an entire content management system. With WordPress, now multiple your vendors by 3 or 4.
Security can be a problem with WordPress
I host a few WordPress and Craft sites; WordPress is the one that cause me the most problems. I kind of liken WordPress' security to building a home on the shady side of town where you're constantly getting drive-bys, people jiggling your locks trying to break in, etc. Craft is tucked away in the suburbs where you're going to get a lot less of that.
Craft also has built-in tools to limit login attempts and change the admin entry point, something WordPress core has been vehemently against. By changing the defaults, I've found you eliminate 99% of the script kiddies that try to brute force the site and suck up server resources. Craft already has both built-in, without any additional plugins.
2023 update: It's been a few years but none of this has changed at all in WP. Paths are still hardcoded and the docs are still mediocre enough that plugin authors don't realize they need to opt-in to sanitize in/output.
I've come to appreciate frameworks like Yii and the built-in niceties they provide by including CSRF protection and Twig's escaping by default. WordPress plugins keep getting bit by CSRF and XSS issues which I believe wouldn't be the case if they were built on top of a decent framework like Craft is.
The obvious downside going with Craft is familiarity.
People point to WordPress as ubiquitous, there's probably someone who can take over and manage the site after any stakeholder leaves. I find at that point, the CMS really doesn't matter that much; it's just like a house, there's going to be people wanting to change everything because they didn't originally do it. Designers tend to be very opinionated. Even if you use WordPress, I've seen clients throw out the baby with the bathwater so to speak.
Biggest of all, Craft promotes separate of styling and content.
The web is increasingly content centered. If you've ever read Karen McGrane, she jokes about WordPress putting everything in one field and how that's set the web publishing back 10 years. If you're a designer who puts markup in the body of a WordPress field, you're doing it wrong.
Ultimately that approach simply doesn't scale. Again, plugins to rescue for WordPress but you can start to see that WP really wasn't designed for this purpose. Keep in mind, you can do a botch job with either system but Craft gives you built-in tools to help combat that.
Your website doesn't have to be WordPress by David Ritter (Ritter Knight)
Craft vs. WordPress by Megan Zlock (Viget)
I don't have much practical experience with WordPress, so I'll let others get into the details and I'll take the easy way out and link to several articles comparing and contrasting Craft against WordPress as well as other popular CMSs.