1. An in-browser content editor comprising: a processor; a non-transitory computer readable memory; a display in communication with said processor and said memory; a parser configured to convert a first input string reflecting a change to said content into a first data structure comprising a plurality of nodes, wherein when said first data structure contains elements that have a visual representation in the content editor, said data structure creates one or more render nodes in a second data structure, said render nodes corresponding to said elements, said second data structure holds elements that are displayed as content of the editor on said display, wherein a selection of content made by a user in said browser is referenced in a third data structure which reference and indexes to an indicator of said selection in said first data structure, wherein the contents of the nodes in said first data structure are converted to a second string that is accepted as input by said content editor and displayed in said browser, wherein said second string is equivalent to said first input string.