visibility:hidden
Hides it but leaves the space.
The tag is not visible, but space is allocated for it on the page. The tag is rendered, it just isn’t seen on the page.
display:none
Removes the element from the layout flow.
The tag in div will not appear on the page at all (although you can still interact with it through the dom). There will be no space allocated for it between the other tags.