The Controller Area Network (CAN) protocol is widely used in low-cost embedded systems. CAN uses "Non Return to Zero" (NRZ) coding and includes a bit-stuffing mechanism. Whilst providing an effective mechanism for clock synchronization, the bit-stuffing mechanism causes the CAN frame length to become (in part) a complex function of the data contents: variations in frame length can have a detrimental impact on the real-time behaviour of systems employing this protocol. In this paper, two software-based mechanisms for reducing the impact of CAN bit stuffing are considered and compared. The first approach considered is a modified version of a technique described elsewhere (e.g. Nolte et al. [T. Nolte, H.A. Hansson, C. Norström, Minimizing CAN response-time jitter by message manipulation, in: Proceedings of the Eighth IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS 2002), San Jose, California, 2002]). The second approach considered is a form of software bit stuffing (SBS). In both cases, not only the impact on message-length variations is addressed but also the implementation costs (including CPU and memory requirements) involved in creating practical implementation of each technique on a range of appropriate hardware platforms. It is concluded that the SBS technique is more effective in the reduction of message-length variations, but at the cost of an increase in CPU time and memory overheads and a reduction in the available data bandwidth. The choice of the most appropriate technique will, therefore, depend on the application requirements and the available resources.