World position offset skewing vertices to the side

I’m trying to add a height map to my mesh and the vertices are getting skewed to the side. Is there any fix?

That is because world position offset expects a vector. You pass in a texture, which is equivalent to a 3-component vector, and since the color values in that texture are all the same for red, green and blue at a given pixel, the world position offset is applied to all directions by the same amount.

Zero out the X and Y component before you pass it into the multiply node and you should be good.

Edit: And if your surface is not completely level you would probably want to take the surface normal at the given pixel into account.