Web components are a set of web platform APIs that allow developers to create custom, reusable HTML tags to use in web pages and web apps. They are made up of four main technologies: HTML templates, custom elements, Shadow DOM, and HTML imports. HTML templates allow developers to declare inert chunks of HTML that can be used as the foundation for an element's structure. Custom elements enable developers to define their own HTML tags and extend existing ones. Shadow DOM provides encapsulation for styling and DOM manipulation. Finally, HTML imports allow developers to include and reuse HTML documents in other HTML documents.