The framework of inner product norm preserving relaxation Runge–Kutta methods [D. I. Ketcheson, SIAM J. Numer. Anal., 57 (2019), pp. 2850–2870] is extended to general convex quantities. Conservation, dissipation, or other solution properties with respect to any convex functional are enforced by the addition of a relaxation parameter that multiplies the Runge–Kutta update at each step. Moreover, other desirable stability (such as strong stability preservation) and efficiency (such as low storage requirements) properties are preserved. The technique can be applied to both explicit and implicit Runge–Kutta methods and requires only a small modification to existing implementations. The computational cost at each step is the solution of one additional scalar algebraic equation for which a good initial guess is available. The effectiveness of this approach is proved analytically and demonstrated in several numerical examples, including applications to high order entropy-conservative and entropy-stable semidiscretizations on unstructured grids for the compressible Euler and Navier–Stokes equations.