Front end and back end
lastmod 2026-03-04created 2026-03-043 edits
In general, the terms front end and back end refer to the first and last stages of a process. The ‘front end’ must take input in various forms from the user and process it according to a specification the ‘back end’ can use. Connecting the ‘front end’ to the ‘back end’ is a kind of interface.
In software engineering, the terms front end and back end refer to the separation of concerns between the presentation layer (front end) and the data access layer (back end) of a piece of software, or the physical infrastructure or hardware. In the client–server model, the client is usually considered the front end, and the server is usually considered the back end, even when some presentation work is actually done on the server.
Software definitions
In content management systems, the front end refers to views facing end users, and the back end refers to views facing administrative users.
In speech synthesis, the front end refers to the part of the synthesis system that converts the input text into a symbolic phonetic representation, and the back end converts the symbolic phonetic representation into actual sounds.
In compilers, the front end translates computer source code into an intermediate representation, and the back end produces executable code from the intermediate representation. The back end usually optimizes to produce code that runs faster. The front end/back end distinction can also separate a parser that deals with source code from a compiler that generates and optimizes executable code. Some designs, such as GCC, offer multiple front end options (parsing different source languages) and multiple back end options (generating code for different target processors).
Some graphical user interface (GUI) applications act as a thin front end for underlying command-line interface (CLI) programs, to save users from having to learn the CLI terminology and commands.
Web development as an example
Another way to understand the differences between the front end and back end is to consider the knowledge that each requires of a software developer. The example lists below focus on web development.
Front end
- Markup and web languages such as HTML, CSS, and JavaScript, as well as ancillary libraries commonly used in those languages, such as Sass or jQuery
- Asynchronous request handling and AJAX
- Single-page applications with frameworks like React, Angular or Vue.js
- Web performance (optimization of things like largest contentful paint, time to interactive, animation FPS, and memory usage)
- Responsive web design
- Cross-browser compatibility issues and workarounds
- End-to-end testing with a headless browser
- Build automation to transform and bundle JavaScript files, reduce image sizes, and handle other processes using tools such as Webpack and Gulp.js
- Search engine optimization
- Accessibility concerns
- Image editing tools such as GIMP or Photoshop
- User interface design and creation
Back end
- Scripting languages like PHP, Python, Ruby, Perl, and Node.js
- Compiled languages like C#, Java, and Go
- Data access layer
- Business logic
- Database administration
- Scalability
- High availability
- Security concerns, such as authentication and authorization
- Software architecture
- Data transformation
- Backup methods and software
Front end and back end
- Version control tools such as Git, Mercurial, and Subversion
- File transfer tools and protocols such as FTP and rsync
See also
- Web development
- Client-side, Server-side
- Front-end web development
- Client–server model
- Out-of-box experience
- Modular programming
- Observer pattern
- Publish–subscribe pattern
- Pull technology
- Push technology
- Remote procedure call
- Application program interface (API)
- Solution stack
- Software architecture
- Web development
- Full-stack developer