ProcessWire is the content management system that connects it all. Regardless of scale, it is simple, powerful, consistent, predictable, capable and just plain fun to use.
From its API to its admin interface, ProcessWire is designed to have an approachable simplicity that is retained at any scale. Simplicity often implies reduced capability, but this is not the case with ProcessWire. From the surface, there is very little complexity and the application requires no training. But open the hood, and you have a lot of horsepower at your disposal for just about any content management need. It's truly a simple interface to powerful engineering. Whether your application is big or small, the inherent simplicity and joy in using the interface and API remains consistent, predictable, and capable.
Highly scalable on sites big and small
Everything about the core is designed to scale. ProcessWire is like a power tool for your website, able to deliver any output, at any scale, to any number of people, while remaining incredibly fast and flexible. Whether you have a 1-page site, or a site with millions of pages, ProcessWire works the same way and remains stable, fast and easy-to-use. Here are a few examples of sites running ProcessWire.
Structure that makes sense
ProcessWire uses a hierarchal structure for pages, like a family tree or a file system. There is no limit imposed by ProcessWire to the depth in which this structure can be defined. It is comfortable scaling to large and complex data needs, and remains simple regardless of scale. ProcessWire makes it easy to traverse this structure from the admin interface, as well as from the API. More about ProcessWire’s structure
No limits on output or design
ProcessWire gives you the tools to get at your data, but you decide how to handle the output. In fact, ProcessWire dictates nothing about the output or format. Meaning, the sky is the limit and anything a designer can dream up is possible, down to the pixel. You never have to design a site for ProcessWire, and the system won't impose any limitations upon your site design or the designer. There is no “theming system” to learn and work around, as there is nothing to “theme” because all output comes from your own markup. ProcessWire isn't limited to just HTML either. It can output JSON, XML or any other format you desire, and can serve as an excellent platform for building web services.
All fields are custom fields
Fields are the containers for individual bits of content, like a headline, body copy, sidebar, etc. In most CMSs (especially those blog oriented ones), those fields are dictated ahead of time by the CMS. This is not the case with ProcessWire, as all fields are completely custom and flexible user-definable fields. You don't have to adapt your content to any predefined containers or types because fields in ProcessWire are defined according to your need. It's easy to edit, add, sort or remove fields from pages (via templates) as you see fit. Each template is assigned to one or more pages, and each field is assigned to one or more templates. There are no limits to the quantity and use of pages, templates or fields. Fields can be as simple as containing raw text or numbers, or more complex like rich text editors, page-to-page relations, fields that hold files or images, or repeatable combinations of any other fields. ProcessWire comes witih dozens of different field types, and more can be added as plugin modules. Fields you create in ProcessWire may also be used as search and/or sorting properties when finding and loading pages. Everything is searchable and accessible. Learn more about ProcessWire’s structure
ProcessWire does not commit you to a pre-built content type but allows to build it as you need it. Your content dictates the content types. —Pigtail Pundits
Modular plugin architecture that goes further
While many CMSs use a modular/plugin architecture, ProcessWire takes the approach even further. The CMS portion of ProcessWire is a group of modules built on top of the ProcessWire content management framework. Modules are not an afterthought or an extra, they are the system. As such, the module/plugin system makes more sense and is faster and simpler to work with than other CMS platforms. More about modules
Multi-language at its core
Need to support multiple languages? All you need to do is translate the text, and ProcessWire takes care of the rest. ProcessWire is multi-language ready at its core and comes with everything you need. ProcessWire makes building and managing a multi-language website a simple task relative to other platforms you may have tried. It comes with an assortment of native multi-language fields ready for all of your translation needs. It also comes with multi-language URLs, enabling a single page to serve content from unique language-specific URLs. In addition, ProcessWire comes built-in with a file translation tool, enabling you to easily translate static text labels that might appear in your template files. More about multi-language support
Easy and enjoyable to develop with
Something we hear over and over is how much fun it is to develop websites in ProcessWire. It makes previously difficult projects easy, enjoyable and just plain fun. ProcessWire's API takes its inspiration from jQuery, providing a simple and enjoyable programming interface to working with your content. Regardless of scale, it behaves as if all content in your site or application is already present, at your fingertips, ready for you to deliver. The API is based on simple PHP, so you don't have another tag-scripting language to learn. While some background in PHP helps with more complex tasks, it is not required to develop your sites with ProcessWire. Learn more or see our API reference.
A breath of fresh air for clients
If you've ever used any web application before, ProcessWire will be easy and familiar. The admin interface is straightforward and no-nonsense. Based on a page-tree, the structure in the admin mirrors the structure on your front-end. For clients concerned about having to learn something new, ProcessWire is always a breath of fresh air, because they already know and understand it from the get-go. ProcessWire's user interface is always focused on the task at hand. For instance, if you are editing a page, then the tools present on the screen are all specific to that purpose, with no distractions. In addition, ProcessWire also supports front-end editing, making it possible for clients to edit their content directly on the front-end of their site, where designated. ProcessWire is a system that web developers always feel good about handing the keys over to the client precisely because it's so easy for them to use. Once a client uses ProcessWire, they don't want to use anything else.
It’s already familiar to developers
ProcessWire works the way you do, seamlessly integrating into your existing development tools and processes. There’s no new template system to learn either, it’s pure API goodness. Your design and development process won't be interrupted by ProcessWire because it's built to adapt to your way of doing things, not the other way around. Whatever your development tools are, you'll find them at home with ProcessWire.
No maintenance: easy to support for the long term
One of the problems with many CMS platforms is that they are full of holes and needing constant updates in order to work around various security issues. This is not the case with ProcessWire. Unlike other platforms, you can launch a ProcessWire site and then leave it for years without maintenance or updates (should that be the need). It’s that reliable and secure, and has been since the beginning. When you update ProcessWire, it's because you want to take advantage of some new feature, not because you are trying to avoid getting hacked.
Easy to upgrade
While it's rarely necessary to upgrade your version of ProcessWire, often you will want to in order to take advantage of new features. It's incredibly simple to upgrade the ProcessWire core. Simply replace the /wire/ directory of your existing installation with the /wire/ directory from the new installation. 99% of the time, that's all there is to it! Should you prefer it, you can also install the ProcessWire Upgrade module, which can make it even simpler by upgrading the core and 3rd party modules for you automatically.
An emphasis on security
Security has always been the #1 priority with ProcessWire, and it shows. There have been no significant security incidents or outages related to ProcessWire’s core in its nearly 15-year history. It’s rock solid and we think you’ll find it one of the most secure open source CMSs on the planet. Since the beginning, every bit of code added to the ProcessWire core goes through a security review by the core developer. The only front-end input to the CMS is the URL, which places a built-in hard limit on attack vectors. Any other inputs are on-demand and at the discretion of the site developer, and ProcessWire comes with a comprehensive suite of input sanitization tools. When it comes to authentication in the admin, ProcessWire comes built-in with configurable password requirements and 2-factor authentication can be optionally enabled for any users. ProcessWire comes with a full role-based access control system (RBAC) supporting strong, highly configurable and granular access control where any access control scenario is possible. ProcessWire CMS security topics
ProcessWire and its predecessor (Dictator CMS) have been powering websites since 2003 (ProcessWire since 2006). The system has been in constant development and continuous improvement for more than 15 years, and this is our lifetime work, we're here to stay. There have been no major incidents or outages related to ProcessWire and it has become established as one of the most stable and secure platforms that you can choose for powering website and applications. During this time, ProcessWire has always remained consistent and true to the original concept and API, always staying up-to-date while ensuring timeless familiarity and reliability to web developers and clients alike.
The best community and support
The community is the best part of ProcessWire. You can always count on the enthusiasm and friendliness in the ProcessWire forums, where our support community is located. We are passionate about developing websites and applications with ProcessWire, and this comes through in the way we communicate and help. In the ProcessWire forums, you'll find a diverse group of the most experienced and skilled web developers and designers in the world. If you are interested in web development with ProcessWire, this is the place to be. Have a question about how to do anything in ProcessWire? Post a question anytime and we're happy to help.
Optimized for output performance and speed
There is no bloat in ProcessWire. We know how important it is for websites to respond quickly, so ProcessWire has always emphasized optimization for performance and speed. ProcessWire is also incredibly powerful, which means some might also use it for heavy lifting tasks or managing delivery of content to huge amounts of traffic. ProcessWire comes with built-in caching features that can handle instant cached delivery of the entire request, or just individual pieces of it.
Optional static cache, CDN and asset minification
For even larger scale needs, an optional commercial module called ProCache enables your site to be delivered from static HTML files, without any overhead of PHP or MySQL. ProCache also enables you to merge, compile and minify assets, and optimize their delivery to a content delivery network (CDN), such as AWS CloudFront. ProCache is a 1st party module developed by the author of ProcessWire to support the development of the ProcessWire core.
Ideal for SEO and accessibility
ProcessWire is a dream to work with for search engine optimization (SEO). Because it gives you full control and doesn't dictate anything about the output, that means that markup can be perfectly optimized for search accessibility rather than some theming system. It allows for a perfect implementation of content output for the title tag, meta description, semantic headlines and markup, to meta data such as schema.org and opengraph, etc., to simple implementation of link “canonical”, “hreflang” (for multi-language) and “next/prev” (for pagination) tags. Basically, its ideal for anything you can dream of to optimize your on-site search accessibility and SEO. In addition to the quality of content and markup, a big factor is also the speed at which it can be delivered. ProcessWire really shines here too. It is optimized for performance, delivers with low time-to-first-byte times and also comes with a variety of optional caching and performance options, both in the core and in modules.
Pages that can do more
While a Page in ProcessWire is most commonly representative of a page on your site, they may also be used as data containers for anything else (similar to a node in Drupal, but better). Whether used for output or not, a page's path (or URL) always relates directly to its placement in the structure, keeping your site organized and accessible, inside and out. Each page gets its data structure (fields) from its template. More about pages
Templates without limitations
Templates are PHP files like any other, and you may use them as you wish. Whether you use them as HTML documents, RSS feeds, RESTful web services, or as controllers to call upon something else, it's up to you. There is no limit to the number of templates you can use, and you may assign them to pages as you see fit. Each template is assigned one or more fields that represent the data structure applied to its pages. More about Templates
Relational and flexible page relationships
Any given pages may cross reference each other in a one-to-one or one-to-many relationship. This gives ProcessWire the ability to function like a relational database on top of a CMS. The client (or developer of the web site), rather than the software, defines what these relationships are. This opens up an incredible amount of flexibility.
Front-end editing support
We suggest that most content be edited independent of output context as a best practice to ensure its portability and longevity. This means editing content in an environment independent of eventual placement or design (a dedicated admin/editor environment). However, there are also times when editing on the front-end also adds a lot of convenience, works better with a client’s workflow, or just plain helps to sell the project. After all, being able to edit content on the front-end is visually compelling and sells itself. For some, the raw simplicity of it might also encourage greater participation in managing content. So you'll be glad to know that ProcessWire comes with native, comprehensive and truly impressive front-end editing features. Because ProcessWire isn't limited to front-end editing, you can also decide when and where you want to enable front-end editing at a granular level, giving you the best of both worlds. More about front-end editing
Everything you want
While there is an awesome ecosystem of optional add-on modules available for ProcessWire, the core product already comes with everything you need to build anything you can dream of. And ProcessWire does this without the bloat of other systems. It has everything you could need and nothing that you won't ever want. It comes native with custom repeatable fields, the ability to resize/rotate/crop images, and everything needed to create a full multi-language site, just as examples. While ProcessWire's core is comprehensive and complete, both free and commercially supported add-on modules are always available too, and they can be excellent time saving optimizations for specific needs.
Quality rich text editing
ProcessWire comes with a quality rich text editing tool (CKEditor-based) that makes editing content easy and familiar for editors. ProcessWire's implementation is particularly comprehensive and configurable to cover just about any custom editing need. It also comes with custom built dialogs for managing links and inserting images. ProcessWire supports both inline and normal rich text editing modes and loads the editors on-demand, enabling you to have potentially hundreds of rich text edited fields on a single page, should the need call for it.
Photo resize, crop, rotate, focus and more
ProcessWire comes with image fields that can be fully edited in the admin environment (and the API too of course). You can resize, crop, rotate, and flip any image, convert it to black and white or sepia, or generate any number of variations. In addition, you can define a custom focus area for any image, ensuring that any auto-generated crops never lose the intended subject of a photo, regardless of crop dimension/proportion. ProcessWire comes with support for both ImageMagick and GD libraries, and even supports animated GIFs.
Drag-and-drop image upload, placement and client-side resize
Uploading files or images in ProcessWire is exceptionally simple. You can drag-and-drop files from your computer into any file/image field in ProcessWire’s page editor and they will immediately upload into the page. If the administrator has specified a maximum allowed dimension for images, they will automatically resize at the client-side before uploading. Meaning, that 20 megapixel photo off your client’s DSLR camera will automatically resize to something more appropriate for a website before actually uploading. You can also drag-and-drop images directly into rich text fields, and the photo will automatically place in the location you dragged it to in your text. From there, you can double-click the image to customize it further as needed (resize/crop). ProcessWire's file and image upload and management tools are a delight for editors.
Built-in custom repeatable field types
ProcessWire comes built-in with the ability to create custom repeatable content types as fields (FieldtypeRepeater and FieldtypePageTable). This enables you to create a group of any custom fields, and then make them repeatable. This enables an editor to create and edit any quantity of of these items, all on a single page. Furthermore, the repeated types can be drag-and-drop sorted and even given hierarchy with depth. For even more possibilities, an optional repeatable matrix type is available in the ProFields package, enabling you to create different types of repeatable content types from within the same field (FieldtypeRepeaterMatrix). More about repeaters
Field and input dependencies
Given ProcessWire’s flexibility and scalability with custom data fields, there may be times where you want the visibility or required state of a field to be dependent upon the state or value of another field. For instance, you could have a multi-line text field called “Other details” that should appear only if the user selects an “Other” option in a select box. Or you could a field called “Price” that is only required if a field called “Inventory” contains a value greater than 0. These are examples of field dependencies or input dependencies. You'll be glad to know ProcessWire comes built-in with full support for both “show-if” and “required-if” field/input dependencies, adding greater flexibility, control and guidance to your content input process. More about field dependencies