p1afem is a Matlab library for h-adaptive lowest-order FEM in 2D. The library covers the Poisson model problem with inhomogeneous and mixed Dirichlet-Neumann boundary conditions. It provides several a-posteriori error estimators (residual, hierarchical, ZZ-type), mesh-refinement strategies (newest vertex bisection, red-green-blue refinement), and a mesh-coarsening strategy for adaptive time-marching schemes for, e.g., parabolic problems. All codes are fully vectorized. In particular, we provide efficient implementations to compute mesh-related quantities (e.g., neighboring elements) or FE quantities (e.g., gradient of discrete functions) so that the code can easily be extended to more general second-order elliptic PDEs.